WebRequest request = WebRequest.Create("http://hi.baidu.com/xuezhongdewu");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream,Encoding.GetEncoding(0));
string responseFromServer = reader.ReadToEnd();
textBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
===============================================================================
功能是获得指定网页的源码并显示在textBox1上,大多数网址通过了,很偶然的一次发现,上面的网址一链过去就假死,不知原因为何。请高手们帮忙看看。
同类网址很多都没问题,这是其中一个有问题的,但绝对不仅这一个(至少发现两个了),但直接浏览则可以。
通常死在string responseFromServer = reader.ReadToEnd(); 这行上。
请问原因是?
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream,Encoding.GetEncoding(0));
string responseFromServer = reader.ReadToEnd();
textBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
===============================================================================
功能是获得指定网页的源码并显示在textBox1上,大多数网址通过了,很偶然的一次发现,上面的网址一链过去就假死,不知原因为何。请高手们帮忙看看。
同类网址很多都没问题,这是其中一个有问题的,但绝对不仅这一个(至少发现两个了),但直接浏览则可以。
通常死在string responseFromServer = reader.ReadToEnd(); 这行上。
请问原因是?
WebRequest request = WebRequest.Create("http://hi.baidu.com/xuezhongdewu/album/index/0");
一链过去就卡在string responseFromServer = reader.ReadToEnd();
string responseFromServer = reader.ReadToEnd();
textBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
这全部注释掉,保留其中一跳代码都会假死,
那应该是从
StreamReader reader = new StreamReader(dataStream,Encoding.GetEncoding(0));
开始出问题了。
但这个应该不是主要原因吧。
捉包发现网页其实返回正常的。
不用ReadToEnd改为ReadLine,然后一行行看读取网页的内容,也确实读到了网页最后一行的了,
然后就挂了。
大多数网页没事的,这几行程序也很短,应该没什么特别错的地方吧。
所以才用response的。而且大多数用户的那个页面都能正常访问得到。
后来卡在https页面了。lz知道如何处理马
WebRequest request = WebRequest.Create("http://hi.baidu.com/xuezhongdewu/album/index/0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(0));
string responseFromServer = reader.ReadToEnd();
textBox1.Text = responseFromServer;
reader.Close();
dataStream.Close();
response.Close();
===========================================
我一直怀疑是网络问题,没办法,当初以为偶然,后来发现有几个网址是必然这样,刚想了想,只能这样办了,给StreamReader加了超时,捕获异常处理,把以处理的流输出,因为整个网的源码的确是下载了下了的,效果一样。
现在如下: StringBuilder ret = new StringBuilder();
WebRequest request = WebRequest.Create("http://hi.baidu.com/xuezhongdewu/album/index/0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
dataStream.ReadTimeout =1000*3;//设置超时!
try{
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding(0));
string out;
while ((out = reader.ReadLine()) != null)
{
ret.Append(out + "\r\n");
} dataStream.Close();
reader.Close();
response.Close();
textBox1.Text = ret.ToString(); }
catch(WebException)
{
textBox1.Text = ret.ToString();//超时后把已获取的输出
}
while ((out = reader.ReadLine()) != null)
{
ret.Append(out + "\r\n");
}
=========================
不是out,而是Out,out是关键字
=============================
就有问题,
而写/index/就没事,
算了,回去再改改。谢谢各位。
=========================
用浏览器上上就知道这样肯定不行的了。
是否是程序无法解析默认页面呢〉?LZ知道后 ,说下哦。
=========================
如果不是我这电信的网络有问题就是那网站有问题,现在只能加上读流超时来处理了。
===========================
给个网址来看看好么