我正在移植一个使用httpclient库连接到我们服务器的W8应用程序。
该应用程序的主要目的是发送图像,但当我尝试在我的WP8上发送图片时,我得到了404未找到错误(似乎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等其他平台上上传图片时没有问题。
答案 0 :(得分:0)
我使用fiddler重现问题来模拟调制解调器的速度。问题正在发生,因为Phone的HTTPWebRequest实现会在请求超过60秒时超时。在调试器中,我看到他们从其原生层返回ERROR_INTERNET_TIMEOUT。我现在能想到的唯一解决方法是在较小的POST中发送文件,假设服务器支持该文件。