2017-02-23 39 views
0

我正在寫一個WP8.1應用程序讀取,並通過REST API發送數據。 除了「搜索」之外,所有這些工作都沒有問題。的HttpClient沒有到達網址

此API工作在POST,我需要發送一個字符串以JSON格式定義我的查詢。如果我只設置了幾個篩選器,則REST API花費很長時間來響應。因此,即使Web API正確運行,HttpResponseMessage對象也沒有成功代碼,並返回「NotFound」消息。

如果我嘗試通過郵差同樣要求它工作正常,但如果我通過SOAPUI嘗試,我得到一個「java.net.SocketTimeoutException:讀超時」的錯誤消息。

在SOAPUI我設法以得到迴應延長超時,但我的C#代碼不斷即使我設置超時屬性的HttpClient對象無法正常工作。

能有人幫我解決我的問題呢? 謝謝!

編輯 的代碼是非常簡單的:

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri(baseAddress); 
client.DefaultRequestHeaders.Accept.Clear(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
client.DefaultRequestHeaders.ExpectContinue = false; 
client.Timeout = TimeSpan.FromSeconds(300); 

HttpContent content = new StringContent(json, Encoding.Unicode, "application/json"); 
HttpResponseMessage response = await client.PostAsync(uri, content)); 

if (response.IsSuccessStatusCode) 
{ 
    string jsonResponse = await response.Content.ReadAsStringAsync(); 
} 
+1

你需要提供有關你在做什麼(一段例如代碼)的詳細信息,否則這將是難治知道可能是什麼問題 –

+0

@ElmerDantas代碼加入 –

+0

嘗試使用新'的StringContent(json.ToString(),Encoding.UTF8, 「應用程序/ JSON」);'..try也僅使用'client.BaseAddress =新URI(baseAddress)'和' client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(「application/json」));'properties。 –

回答

0

我知道這可能會不喜歡你,但你有沒有試着用RestSharp?由於某些原因,在我需要通過POST發送信息的情況下,HTTPClient不能按預期工作,並且將它設置爲uri的一部分而不是正文的「內容」信息。

的代碼equivalente塊可能是這樣的:

var client = new RestClient("http://example.com"); 
var request = new RestRequest("resource/{id}", Method.POST); 
request.AddParameter("name", "value"); 

// execute the request 
IRestResponse response = client.Execute(request); 

client.ExecuteAsync(request, response => { 
    Console.WriteLine(response.Content); 
}); 
+0

沒有運氣我得到一個錯誤試圖在我的項目安裝RestSharp,同樣的錯誤如下:[鏈接](https://github.com/restsharp/RestSharp/issues/808) –

+0

您必須安裝此庫:此鏈接的RestSharp.Portable HttpClient:nuget.org/packages/FubarCoder.RestSharp.Portable –