【问题标题】:Windows Phone: Cancel HttpWebRequest and get dataWindows Phone:取消 HttpWebRequest 并获取数据
【发布时间】:2013-05-17 18:35:13
【问题描述】:

我在 Windows Phone 8 的 C# 中使用 HttpWebRequest 从远程服务器下载文件。请求在一定时间后使用超时取消,该超时调用 HttpWebRequest.Abort()。

这很好,但我想访问已经下载的数据,包括服务器发送的标头,即使下载(请求)尚未完成:

HttpWebRequest  _request =  (HttpWebRequest)WebRequest.Create("http://urltofile.zip");
_request.Method = "GET";

_timeout.Start(); // a timer which calls _request.Abort() after a certain time
request.BeginGetResponse(new AsyncCallback(HandleResultAsync), _request);



public void HandleResultAsync(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;

    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); // exception is raised here when "_request.Abort()" is called from the timer
}

当从计时器调用“HttpWebRequest.Abort()”时,将调用方法“HandleResultAsync”。但是访问“request.EndGetResponse()”获取已经下载的头部和部分内容失败,因为响应已经结束。

如何访问最终下载的标头和部分内容?

问候,

【问题讨论】:

    标签: c# httpwebrequest windows-phone httpwebresponse


    【解决方案1】:

    我找到了一个解决方案:您必须关闭 HttpWebRequest 的缓冲,然后可以在我最初发布的“HandleResultAsync”方法中读取数据块时取消下载:

    _request.AllowReadStreamBuffering = false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多