用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