2013-05-18 17 views
6

Sto usando RestSharp per lo sviluppo sul lato client. Sto anche usando gemma di Ruby Grape per la mia API personalizzata sul lato server. Uva gioiello può fare versioning impostando Accept HTTP header f.e a application/vnd.twitter-v1+jsonCambio intestazione RestSharp Accept

E comando test via console funziona perfettamente

curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline 

Ma quando sto provando ad installare intestazione per RestRequest sto ottenendo error 404 sul server.

Non ho idea del perché. Ho trovato un altro problema che il server restituisce 406 error - ma nel mio caso 404.

Come posso inserire un valore personalizzato per l'intestazione Accept?

risposta

5

È possibile impostare un header personalizzato Accept con il metodo AddHeader ...

var client = new RestClient("http://example.com/api"); 
var request = new RestRequest("statuses/public_timeline", Method.GET); 
request.AddHeader("Accept", "application/vnd.twitter-v1+json"); 
var response = client.Execute(request); 
var json = response.Content; 

Questo dovrebbe funzionare bene se si è disposti a deserializzare il JSON da soli.


Se si vuole utilizzare il Execute<T> metodo generico, che fa deserializzazione automatico per voi, incorrere in problemi ...

Dal RestSharp documentation about deserialization:

RestSharp include deserializzatori per elaborare XML e JSON. Dopo aver ricevuto una risposta, RestClient sceglie il deserializzatore corretto da utilizzare in base al tipo di contenuto restituito dal server. Le impostazioni predefinite possono essere sovrascritte (vedere Personalizzazione). Il built-in tipi di contenuto supportati sono:

  • application/json - JsonDeserializer
  • application/xml - XmlDeserializer
  • text/JSON - JsonDeserializer
  • text/xml - XmlDeserializer
  • * - XmlDeserializer (tutti gli altri tipi di contenuto non nominati)

Questo sta dicendo che, per impostazione predefinita, se il tipo di contenuto della risposta non è uno di quelli elencati, RestSharp tenterà di utilizzare XmlDeserializer sui dati. Questo è personalizzabile anche se con un lavoro extra.

Problemi correlati