怎样用C#重复读取HTTP响应流?
搜收录网整理 发布日期:2021/1/11 14:37:55
用HttpWebRequest获取网页内容时,有时候需要对获取到的HttpWebResponse对象读取多次,然而,Webrequest.readResponseStream只能读取一次,StreamReader也只能读取一次,因为流现在已经走到了尽头。当通过stream.Position = 0重置流时引发异常,是因为流不能手动更改它的位置。怎样解决这个问题呢?
解决办法是,将其复制到一个新的MemoryStream对象。然后,你可以重新读取的MemoryStream了。
 
//引用
Stream responseStream = CopyAndClose(resp.GetResponseStream());
responseStream.Position = 0;
 
//复制流
private static Stream CopyAndClose(Stream inputStream)
{
    const int readSize = 256;
    byte[] buffer = new byte[readSize];
    MemoryStream ms = new MemoryStream();
 
    int count = inputStream.Read(buffer, 0, readSize);
    while (count > 0)
    {
        ms.Write(buffer, 0, count);
        count = inputStream.Read(buffer, 0, readSize);
    }
    ms.Position = 0;
    inputStream.Close();
    return ms;
}

信息网址:http://www.soshoulu.com/ziyuan/view17844.htm
相关信息