2013-05-18 25 views
6

Używam RestSharp do rozwijania po stronie klienta. Używam również klejnotu Ruby Grape dla mojego niestandardowego API po stronie serwera. Grape gem może zrobić wersjonowanie ustawiając Zebrane nagłówka HTTP f.e do application/vnd.twitter-v1+jsonRestSharp Accept zmiana nagłówka

i polecenia testowego poprzez konsoli działa idealny

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

Ale gdy próbuję ustawić nagłówek dla RestRequest jestem coraz error 404 na serwerze.

Nie mam pojęcia, dlaczego tak jest. Znalazłem inny problem, który zwraca serwer 406 error - ale w moim przypadku 404.

Jak ustawić niestandardową wartość dla nagłówka Accept?

Odpowiedz

5

Można ustawić niestandardowy Accept nagłówek z metodą 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; 

ten powinien działać dobrze, jeśli są chętni do deserializowania samemu JSON.


Jeśli chcesz skorzystać z metody rodzajowe Execute<T>, który automatycznie dokonuje deserializacji dla Ciebie, napotkasz problemy ...

Z RestSharp documentation about deserialization:

RestSharp zawiera deserializery do przetwarzania XML i JSON. Po otrzymaniu odpowiedzi RestClient wybiera poprawny deserializator do użycia na podstawie typu zawartości zwróconego przez serwer. Wartości domyślne można przesłonić (patrz Dostosowywanie). Wbudowany w rodzaju treści są obsługiwane:

  • application/json - JsonDeserializer
  • application/xml - XmlDeserializer
  • text/json - JsonDeserializer
  • text/xml - XmlDeserializer
  • * - XmlDeserializer (wszystkie inne typy zawartości nie zostały określone)

mówi, że domyślnie, jeśli typ zawartości odpowiedzi nie jest wymieniony na liście, RestSharp spróbuje użyć XmlDeserializer na twoich danych. Jest to konfigurowalny, ale z dodatkową pracą.

Powiązane problemy