怎樣用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.respectj.cn/ziyuan/view17844.htm
相關信息
都挺好在线观看