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();  这行上。
请问原因是?

解决方案 »

  1.   

    不好意思!地址给错了,第一行请改为
      WebRequest request = WebRequest.Create("http://hi.baidu.com/xuezhongdewu/album/index/0");
    一链过去就卡在string responseFromServer = reader.ReadToEnd(); 
      

  2.   

    除非把
    string responseFromServer = reader.ReadToEnd(); 
                textBox1.Text = responseFromServer; 
                reader.Close(); 
                dataStream.Close(); 
                response.Close(); 
    这全部注释掉,保留其中一跳代码都会假死,
    那应该是从
    StreamReader reader = new StreamReader(dataStream,Encoding.GetEncoding(0)); 
    开始出问题了。
      

  3.   

    会整个程序卡在那里,很久后返回异常,“无法从传输连接中读取数据: 连接已关闭。”
    但这个应该不是主要原因吧。
    捉包发现网页其实返回正常的。
    不用ReadToEnd改为ReadLine,然后一行行看读取网页的内容,也确实读到了网页最后一行的了,
    然后就挂了。
    大多数网页没事的,这几行程序也很短,应该没什么特别错的地方吧。
      

  4.   

    这个网页其实是baidu空间的相册的页面来的,其他用户都能正常访问到,唯独个别几个,这是其中一个,但直接用浏览器链接过去正常的。
      

  5.   

    response应该不会返回获取下载那个页面的图片的数据的,要不然早就会用WebBrowser ,就是因为WebBrowser 会下载那个页面的图片,很占资源。
    所以才用response的。而且大多数用户的那个页面都能正常访问得到。
      

  6.   

    response返回的应该是html的内容吧。我最近也在做自动提交的东西。也用的这个。
    后来卡在https页面了。lz知道如何处理马
      

  7.   

    经测试,此代码没有任何问题,可以采到数据。建议从其他方面考虑
      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();
      

  8.   

    经测试,此代码没有任何问题,可以采到数据。建议从其他方面考虑 
    ===========================================
    我一直怀疑是网络问题,没办法,当初以为偶然,后来发现有几个网址是必然这样,刚想了想,只能这样办了,给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();//超时后把已获取的输出
         
     }
      

  9.   

       string out;
                while ((out = reader.ReadLine()) != null)
         {
             ret.Append(out + "\r\n");
         }
    =========================
    不是out,而是Out,out是关键字
    =============================
      

  10.   

    而且发现网址后面写/index/0
    就有问题,
    而写/index/就没事,
    算了,回去再改改。谢谢各位。
      

  11.   

    比如LZ试试http://hi.baidu.com/xuezhongdewu/album/index/0/index.html之类的呢?
      

  12.   

    http://hi.baidu.com/xuezhongdewu/album/index/0/index.html
    =========================
    用浏览器上上就知道这样肯定不行的了。
    是否是程序无法解析默认页面呢〉?LZ知道后 ,说下哦。
    =========================
    如果不是我这电信的网络有问题就是那网站有问题,现在只能加上读流超时来处理了。
      

  13.   

    LZ搞过https的内容获取吗?
    ===========================
    给个网址来看看好么