2015-09-25 67 views
0

我試圖使用RestSharp連接到服務器。但我得到HTTP Error 406 Not acceptable。 這裏是Web服務響應:執行restsharp請求後的HTTP錯誤406

{"metaInfo":{"ErrorString":" ","ErrorCode":" ","Result":true},"userModel": 
{"UserId":"123qwe","UserName":"aaa","FirstName":"ALi","LastName":"TbT"}} 

REST服務實際上是我測試創建了一個簡單的PHP文件:

<?php 
$a = array("metaInfo"=>array("ErrorString"=>" ","ErrorCode"=>" ","Result"=>true),"userModel"=>array("UserId"=>"123qwe","UserName"=>"aaa","FirstName"=>"ALi","LastName"=>"TbT")); 
echo json_encode($a); 
?> 

這裏是RegisterResult和元信息類:

public class RegisterResult 
    { 
     public MetaInfo metaInfo { get; set; } 
    } 
public class MetaInfo 
    { 
     public string ErrorString { get; set; } 
     public string ErrorCode { get; set; } 
     public bool Result { get; set; } 
    } 

運行其餘請求的代碼如下:

var client = new RestClient(Configuration.PortalUri); 
var request = new RestRequest(requestUri, HttpMethod.Post); 
var asyncHandle = await client.Execute<RegisterResult>(request); 

你能告訴我問題是什麼嗎? 我認爲標題或編碼或類似的東西有問題。我對嗎?

回答

1

此錯誤是特定於程序員創建您所調用的服務的方式。從C#視角來看你的代碼沒有問題,但是服務作者選擇實現他們的服務的方式並不喜歡服務調用中的某些東西。你將不得不參考他們的文檔或詢問他們的程序員之一。

這是一個HTTP錯誤的解釋406 (從http://www.checkupdown.com/status/E406.html拍攝):

固定406錯誤 - 一般

在Web瀏覽器極少會出現此錯誤,因爲大多數 瀏覽器將接受任何數據從Web服務器返回。

如果客戶端不是Web瀏覽器,那麼任何人都只能調查 問題通過查看客戶端 系統

產生的接受頭部考慮這些頭文件來修改:

•接受:客戶端接受的MIME類型。例如,瀏覽器 可能只接受返回類型的數據(HTML文件,GIF文件等),它會知道如何處理。
•Accept-Charset:客戶端接受的字符集爲 。
•Accept-Encoding: 客戶端接受的數據編碼,例如:它理解的文件格式。 •接受 - 語言:客戶接受的自然語言(英語,德語等) 。 •接受範圍:客戶端是否接受來自 資源的字節範圍,即資源的一部分。

例如,您可能需要添加到您的要求:

request.AddHeader("Accept", "application/json"); 
+0

您好。感謝您的回答。其實沒有服務提供商。 「Rest」響應是我自己在一個簡單的php文件中創建的。這是一個以json格式編碼的簡單數組。你能否看看更新後的問題。 –

+0

也許試試這個? request.AddHeader(「Accept」,「application/json」); –

+1

謝謝,我發現了這個問題。問題是我已經寫了'test'作爲請求Uri,但我應該使用'test.php'代替!我不知道爲什麼它拋出一個不可接受的錯誤代碼,而不是簡單地扔404未找到的消息! –