我正在编写一个通过REST API读取和发送数据的WP8.1应用程序。 除了“搜索”之外,所有这些都没有问题。
此API在POST中工作,我需要以Json格式发送一个字符串来定义我的查询。如果我只设置了几个过滤器,则REST API需要很长时间才能响应。因此,HttpResponseMessage对象没有成功代码,并且它返回“NotFound”消息,即使Web API正确运行也是如此。
如果我通过Postman尝试相同的请求它可以正常工作,但是如果我通过SoapUi尝试它,我会收到“java.net.SocketTimeoutException:read timed out”错误消息。
在SoapUi中,我设法延长超时以获得响应,但即使我将TimeOut属性设置为HttpClient对象,我的C#代码也不能正常工作。
有人可以帮我解决我的问题吗? 谢谢!
修改 代码非常简单:
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();
}
答案 0 :(得分:0)
我知道这可能不会像你一样,但你试过RestSharp吗?出于某些原因,在我需要通过POST发送信息的特定情况下,HTTPClient并没有按预期工作,并且内容"信息被设置为uri的一部分而不是身体。
等效的代码块可能是这样的:
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);
});