如何读取 HttpWebResponse 两次

Dev*_*per 1 .net c# webrequest httpwebresponse streamreader

如何两次读取 HttpWebResponse?有可能吗?

我的代码不起作用,也respStream.Position = 0;没有帮助。

有什么线索吗?

var data = (HttpWebRequest)WebRequest.Create(url);  
var response = (HttpWebResponse)data.GetResponse();

var respStream = response.GetResponseStream();

string responseText;         
using (var reader = new StreamReader(respStream, encoding))
{
     responseText = reader.ReadToEnd().Trim();
}
// Do something and read it again
using (var reader = new StreamReader(respStream, encoding))
{
     responseText = reader.ReadToEnd().Trim();
}
Run Code Online (Sandbox Code Playgroud)

dot*_*tom 5

返回的类型response.GetResponseStream()System.Net.ConnectStream。如果您检查此流的属性,CanSeek您将发现无法查找它,因此这意味着您无法重置它并再次读取它:

var typeOfStream = respStream.GetType();    // System.Net.ConnectStream
var canSeek = respStream.CanSeek;           // false
Run Code Online (Sandbox Code Playgroud)

但是,当您将数据读取到字符串时,您已经拥有了数据,因此您可以使用它两次:

string responseText1, responseText2;
using (var reader = new StreamReader(respStream, encoding))
{
     responseText1 = reader.ReadToEnd().Trim();
     responseText2 = responseText1;    // you get a copy of response
}
Run Code Online (Sandbox Code Playgroud)