Windows Phone:取消HttpWebRequest并获取数据

本文关键字:获取 数据 HttpWebRequest 取消 Phone Windows | 更新日期: 2023-09-27 18:14:04

我在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()"获取已经下载的页眉和部分内容失败,因为响应已经结束。

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

认为,

Windows Phone:取消HttpWebRequest并获取数据

我找到了一个解决方案:您必须关闭HttpWebRequest的缓冲,然后可以取消下载,同时从我的初始帖子中读取"HandleResultAsync"方法中的数据块:

_request.AllowReadStreamBuffering = false;