2016-08-27 13 views
0

Как читать HttpWebResponse twise? Это вообще возможно?Как читать HttpWebResponse дважды

Мой код не работает и respStream.Position = 0; не помогает.

Любая подсказка, pls?

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(); 
} 
+1

Зачем вам когда-либо читать его дважды? вы читаете его один раз и дважды ссылаетесь на результат –

ответ

2

Тип, который возвращается из response.GetResponseStream() является System.Net.ConnectStream. Если проверить свойство CanSeek этого потока, вы увидите, что она не может быть добившиеся, так что это означает, что вы не можете сбросить его и прочитать ее еще раз:

var typeOfStream = respStream.GetType(); // System.Net.ConnectStream 
var canSeek = respStream.CanSeek;   // false 

Однако, когда вы читаете данные в строку у вас уже есть данные, поэтому вы можете использовать его дважды:

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