【发布时间】:2014-04-18 00:16:53
【问题描述】:
我正在使用 WP8 中的 HttpClient 并执行 Post 请求。我知道通话可能需要很长时间,因为我实际上是在模拟慢速网络场景。因此,我将HttpClient.Timeout 相应地设置为 5 分钟。
但是,我在 60 秒左右出现超时。我相信超时不起作用。 我相信这个问题中提到的 WP 存在这个问题: HttpClient Portable returns 404 notfound on WP8.
他们使用了一种解决方法,但这不适用于我的场景。其实我还想等很久。
我的问题:
1) 是 WP8 的 HttpClient 的错误/问题还是我没有正确设置它? 2)您是否想到仍然使用 HttpClient 的解决方法?
我读过也许 HttpWebRequest 是一个选项。但是,我相信 HttpClient 应该是这种“简单”场景的理想选择。
我的代码很简单:
private static async Task<HttpResponseMessage> PostAsync(Uri serverUri, HttpContent httpContent)
{
var client = new HttpClient();
client.Timeout = TimeSpan.FromMinutes(5);
return await client.PostAsync(serverUri, httpContent).ConfigureAwait(false);
}
服务器收到请求,在处理请求时,客户端中止。
更新:HttpClient.PostAsyn 返回的HttpResponseMessage 是这个"{StatusCode: 404, ReasonPhrase: '', Version: 0.0, Content: System.Net.Http.StreamContent, Headers: { Content-Length: 0 }}"。正如我所说,服务器已找到并正在接收数据并进行处理。
【问题讨论】:
-
您确定服务器没有在 60 秒后超时?
-
是的,我确定。我实际上也在运行服务器,我看到了进展。服务器在回复客户端之前会执行一些 CPU 密集型处理。
标签: windows-phone-8 timeout dotnet-httpclient