2014-03-06 83 views
4

我在C#中有這個Windows Phone 8項目,我正在使用RestSharp 104.4.0向服務器發出請求。服務器只接受「接受」類型的「application/json」。我的代碼調用請求:爲什麼是RestSharp AddHeader(「Accept」,「application/json」); =到項目清單?

var client = new RestClient(_jsonBaseUrl + someURL) 
{ 
    Authenticator = new HttpBasicAuthenticator(someUsername, somePassword) 
}; 

var request = new RestRequest(Method.POST); 

UTF8Encoding utf8 = new UTF8Encoding(); 
byte[] bytes = utf8.GetBytes(json); 
json = Encoding.UTF8.GetString(bytes, 0, bytes.Length); 

request.RequestFormat = DataFormat.Json; 
request.AddHeader("Accept", "application/json"); 
request.AddBody(json); 
request.Parameters.Clear(); 
request.AddParameter("application/json", json, ParameterType.RequestBody); 

client.ExecuteAsync<UserAccount>(request, response => 
{ 
    if (response.ResponseStatus == ResponseStatus.Error) 
    { 
     failure(response.ErrorMessage); 
    } 
    else 
    { 
     success("done"); 
    } 
}); 

「json」變量是一個JSON字符串。你可以看到我的接受類型設置爲AddHeader(「Accept」,「application/json」);但由於一些有線的原因,服務器接收這種接受類型: 「接受」:「application/json,application/xml,text/json,text/x-json,text/javascript,text/xml」

什麼我必須這樣做,以確保服務器獲得的唯一接受類型是「Accept」:「application/json」?

任何形式的幫助將不勝感激。

回答

8

https://groups.google.com/forum/#!topic/restsharp/KD2lsaTC0eM

的Accept報頭是通過檢查與該RESTClient實現實例中登記的 「處理程序」自動生成。一個optin 是使用RestClient.ClearHandlers();然後使用RestClient.AddHandler(「application/json」, new JsonDeserializer())顯式添加JSON解串器 ;

+0

不知道爲什麼我找不到那與我所有的谷歌搜索:)但謝謝生病給它一個鏡頭。 – user2408952

+0

它實際上是第一個結果:D –

+0

它的工作原理,RestClient.ClearHandlers();然後RestClient.AddHandler(「application/json」,新的JsonDeserializer());然後刪除request.AddHeader(「Accept」,「application/json」); – user2408952