2017-02-23 42 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 –