2013-05-18 63 views
6

我正在使用RestSharp在客戶端進行開發。我也在服務器端使用Ruby Grape gem作爲自定義API。葡萄寶石可以通過設置通過控制檯接受HTTP頭f.e到application/vnd.twitter-v1+jsonRestSharp接受標題更改

和測試命令做版本完美的作品

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

但是,當我試圖設立RestRequest我在服務器上獲得error 404頭。

我不知道爲什麼如此。我發現另一個問題,服務器返回406 error - 但在我的情況下404。

我怎麼能把自定義值接受頭?

回答

5

您可以設置自定義Accept頭與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; 

,如果你願意反序列化JSON自己這應該很好地工作。


如果你想利用通用Execute<T>方法,它不自動反序列化你的,你會遇到的問題...

RestSharp documentation about deserialization

RestSharp包括反序列化器來處理XML和JSON。收到響應後,RestClient將根據服務器返回的內容類型選擇正確的解串器進行使用。默認值可以被覆蓋(請參閱自定義)。內置支持的內容類型有:

  • 應用/ JSON - JsonDeserializer
  • 應用/ XML - XmlDeserializer
  • 文/ JSON - JsonDeserializer
  • 文本/ XML - XmlDeserializer
  • * - XmlDeserializer (未指定所有其他內容類型)

This在默認情況下,如果響應的內容類型不是列出的內容之一,那麼RestSharp將嘗試在您的數據上使用XmlDeserializer。這是可定製的,但額外的工作。