HttpClient Portable在WP8上返回404 notfound

时间:2013-06-04 10:16:01

标签: windows-phone-8 portable-class-library dotnet-httpclient

我正在移植一个使用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等其他平台上上传图片时没有问题。

1 个答案:

答案 0 :(得分:0)

我使用fiddler重现问题来模拟调制解调器的速度。问题正在发生,因为Phone的HTTPWebRequest实现会在请求超过60秒时超时。在调试器中,我看到他们从其原生层返回ERROR_INTERNET_TIMEOUT。我现在能想到的唯一解决方法是在较小的POST中发送文件,假设服务器支持该文件。