首页 新闻 会员 周边 捐助

stream的问题

0
悬赏园豆:15 [已解决问题] 解决于 2011-08-09 17:34

             //string s = Response.ContentEncoding;     

           //Stream resStream = Response.GetResponseStream();      

          //StreamReader sR = new StreamReader(resStream, Encoding.UTF8);       

         //string TML = sR.ReadToEnd();           

     //StreamReader sr = new StreamReader(resStream, Encoding.Default);          

      //string HTML = sr.ReadToEnd();

为什么TML有值,而HTML就是空的呢?一个Stream只能使用一次?不应该啊,为什么为什么。。。。。。

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2011-08-01 10:39
< >
分享
最佳答案
0

Stream是只读向前的,因此sR.ReadToEnd()后,resStream的读取位置就移动到了流尾,这时候再读流,就没有数据了.

你可以使用MemoryStream接收ResponseStream中的内容,然后你可以反复使用MemoryStream,注意每次要重新读取MemoryStream的时候,都需要调用MemoryStream的Seek(0,SeekOrign.Begin);

收获园豆:15
Launcher | 高人七级 |园豆:45050 | 2011-08-01 10:41
StreamReader rd = null;
if (string.Compare(tempCharSet, charset, true) != 0)
{
en = Encoding.GetEncoding(tempCharSet);
rd = new StreamReader(Response.GetResponseStream(), en);
HTML = rd.ReadToEnd();
}怎么也为空?Response.GetResponseStream()就只能调用一次么??
Rookier | 园豆:652 (小虾三级) | 2011-08-01 10:53
@小小白白:是的,流只能读一次.
Launcher | 园豆:45050 (高人七级) | 2011-08-01 11:52
其他回答(2)
0

Stream resStream1 = resStream; 获取你再申明一个

杯具程序员 | 园豆:1718 (小虾三级) | 2011-08-01 13:38
0

//StreamReader sR = new StreamReader(resStream, Encoding.UTF8);       

         //string TML = sR.ReadToEnd();           

     //StreamReader sr = new StreamReader(resStream, Encoding.Default);          

      //string HTML = sr.ReadToEnd();
这4条是同时执行吗? 只执行两条试试 

慧☆星 | 园豆:5722 (大侠五级) | 2011-08-01 14:13
。。。。。当然是同时执行的,要不然就没有问题了。。
支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-08-01 17:37
同时执行就有问题了,后面的那个就获取不到了
支持(0) 反对(0) 慧☆星 | 园豆:5722 (大侠五级) | 2011-08-01 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册