Windows phone 8 HttpClient Portable返回404在WP8上找不到
我正在移植一个W8应用程序,它使用httpclient库连接到我们的服务器 该应用程序的主要目的是发送图像,但当我尝试在我的WP8上发送图像时,我得到了一个404未找到的错误,似乎Microsoft重新映射到404有很多错误,如果我检查服务器日志,我可以看到服务器在故障前接收了大约1/4的图像。在我的W8应用程序中,同样的功能似乎可以正常工作。我的W8应用程序没有在3G上测试,如果我使用Wifi连接,它可以在WP8上工作。我认为问题可能在于等待时间,所以我尝试添加Keep-Alive标题,但没有成功。 我目前的代码是:Windows phone 8 HttpClient Portable返回404在WP8上找不到,windows-phone-8,portable-class-library,dotnet-httpclient,Windows Phone 8,Portable Class Library,Dotnet Httpclient,我正在移植一个W8应用程序,它使用httpclient库连接到我们的服务器 该应用程序的主要目的是发送图像,但当我尝试在我的WP8上发送图像时,我得到了一个404未找到的错误,似乎Microsoft重新映射到404有很多错误,如果我检查服务器日志,我可以看到服务器在故障前接收了大约1/4的图像。在我的W8应用程序中,同样的功能似乎可以正常工作。我的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)上上传图片,没有问题。我使用fiddler模拟调制解调器速度重现了这个问题。这个问题之所以会发生,是因为手机的HTTPWebRequest实现会在请求超过60秒时超时。在调试器中,我看到他们从本机层返回错误\u INTERNET\u超时。目前我能想到的唯一解决办法是,假设服务器支持,以较小的方式发送文件。您是否尝试捕获网络跟踪?@TheESJ我尝试使用Wireshark,我可以看到服务器开始接收流,但突然停止接收信息。经过多次重试,我可以发送一张图片,可能需要20-30次重试。是否可以共享完整的复制代码?对不起,我的公司不允许我共享代码。但是我认为你可以用低连接速度2G发送大约1.4mb的数据流来重现这个问题。我做了一个小项目,你可以检查这个问题,将网络设置为2G模式很重要。您只需将sync类中的sUri更改为任何能够接收大型post呼叫的url。谢谢@TheESJ的帮助,我已经实施了图片分割以避免此问题。在我的倍数Trayi中,我做了一个C++组件,但结果相同,所以网络实现似乎有问题。