【发布时间】:2013-06-04 10:16:00
【问题描述】:
我正在移植一个使用 httpclient 库连接到我们的服务器的 W8 应用程序。
该应用程序的主要目的是发送图像,但是当我尝试在我的 WP8 上发送图片时,如果我检查服务器日志,我会收到 404 not found 错误(似乎 Microsoft 重新映射到 404 有很多错误) ,我可以看到服务器在失败之前收到了大约 1/4 的图像。同样的功能似乎在我的 W8 应用程序中运行良好(未在 3G 上测试),如果我使用 Wifi 连接,则在 WP8 上运行。我认为问题可能是等待时间,所以我尝试添加 Keep-Alive 标头但没有成功。 我目前的代码是:
using (HttpClient httpClient = new HttpClient())
{
httpClient.Timeout = TimeSpan.FromMinutes(10);
Stream streamW = new MemoryStream();
this.bSyncOK = await Send(streamW);
streamW.Seek(0, SeekOrigin.Begin);
HttpResponseMessage response = await httpClient.PostAsync(sUri, new StreamContent(streamW));
if (response.IsSuccessStatusCode)
{
Stream streamR = await response.Content.ReadAsStreamAsync();
this.bSyncOK = await Recv(streamR);
streamR.Dispose();
}
else
throw new HostNotFoundException();
}
使用同一台服务器上传IOS、Android等其他平台的图片没有问题。
【问题讨论】:
-
您是否尝试捕获网络跟踪?
-
@TheESJ 我尝试使用Wireshark,我可以看到服务器开始接收流但突然停止接收信息。经过多次重试后,我可以发送图片(可能重试 20-30 次)。
-
可以分享完整的复制代码吗?
-
对不起,我的公司不让我分享代码。但我认为您可以重现以低连接速度 (2G) 发送约 1.4mb 流的问题。
-
我做了一个小项目,您可以在其中检查问题,将网络设置为 2G 模式很重要。您只需要将同步类中的 sUri 更改为任何能够接收大帖子调用的 url link
标签: windows-phone-8 portable-class-library dotnet-httpclient