用于读取大流的HttpWebRequest和Response

时间:2011-03-13 14:43:29

标签: c# httpwebrequest

我有一个要求,我需要从Web服务器读取大流或数据。 这不是流式传输,而是从客户端以块的形式读取大数据。

为此,我创建了一个Http Web请求。以下是示例代码..

StreamingObject streamObj = null;
using (HttpWebRequest httpReq = WebRequest.Create(uri))
{
    HttpWebResponse response = httpReq.GetRespons();
    Stream responseStream = response.GetStream();

    streamObj = new StreamingObject(response, responseStream);
}
return streamObj;

在我的代码中,我发出一个Http Web请求给予Uri。然后我得到了HttpWebResponse和Response Stream。创建一个StreamingObject实例,它是一个包装类,用于存储Http响应和响应流。

我已经处理了Http Web请求。客户端提供StreamingObject,流对象有一个方法GetStream,它返回底层响应流。当StreamingObject被释放时,Http响应和流被丢弃。

引入StreamingObject的原因是Http Response必须保持打开才能访问底层流。

我想知道这是一种正确的方法,还是有更简单的方法。

1 个答案:

答案 0 :(得分:0)

我建议不要处置HttpWebRequest对象,因为你可能非常需要它。只需将其添加到StreamingObject并在处置StreamingObject时将其丢弃。例如,我发现如果我想提前关闭响应流,响应将会挂起,直到读取完所有数据。但是在请求对象上调用Abort将立即关闭流。