2016-08-27 1 views
0

HttpWebResponse twiseを読むには?まったく可能ですか?HttpWebResponseを2回読む方法

私のコードは機能しません。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度読んでみませんか?あなたは一度それを読んで、結果を二度参照する –

答えて

2

response.GetResponseStream()から返されるタイプはSystem.Net.ConnectStreamあります。あなたは文字列にデータを読み込む際に

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

しかし、あなたが既に持っている:あなたはそれがシークできないことがわかります。このストリームのプロパティCanSeekをチェックし、もしそうなら、これはあなたがそれをリセットして、もう一度それを読むことができないことを意味しますデータを2回使用することができます:

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