zoukankan      html  css  js  c++  java
  • HttpWebRequest、HttpWebResponse获取网页

    1,通过HttpWebRequest、HttpWebResponse获取一个流

                    request =  (HttpWebRequest)System.Net.WebRequest.Create(this._url);
                    HttpWebResponse response =  (HttpWebResponse)request.GetResponse();
                    Stream  reciveStream =   response.GetResponseStream();

    2,读取流成字符串

    方法1:利用Stream的Read方法

     byte[] byteData = new byte[response.ContentLength];
                    int count = byteData.Length, offset = 0;
                    while (count > 0)
                    {
                        int n = reciveStream.Read(byteData, offset, count);
                        if (n == 0)
                        {
                            break;
                        }
                        offset += n;
                        count -= n;
                    }
    
                    string strHtml =  System.Text.Encoding.GetEncoding("utf-8").GetString(byteData);
                    lstURL.Add(strHtml);
                    response.Close();

    方法1中的response.ContentLength可能为-1(和服务器的压缩有关),造成数组初始化失败。

    网上方法:添加 request.Headers.Set("Accept-Encoding", "identity"); 强制服务器不压缩,但是我测试的时候总是超时,所以该方法可靠性不定。

    建议不要用方法1,用下面的方法2。

    方法2:利用StreamReader

    using (StreamReader reader = new StreamReader(reciveStream, System.Text.Encoding.UTF8))
                    {
                        string strHtml = reader.ReadToEnd();
    
                        lstURL.Add(strHtml);
                    }
                    response.Close();

    注意点:

    1,要关闭流。(选一个就可以了)

    response.Close() 或 reciveStream.Close()

    2,注意编码。

    StreamReader默认使用utf-8。
    不管是使用stream,还是streamReader,都建议根据具体网页内容,指定编码,不然会出现乱码。
  • 相关阅读:
    「CSP-S 2019」初赛解析
    「SP741」STEAD
    「CF1382B」Sequential Nim
    「二分图」学习笔记
    题解 P3321 【[SDOI2015]序列统计】
    题解 P5339 【[TJOI2019]唱、跳、rap和篮球】
    题解 P3200 【[HNOI2009]有趣的数列】
    题解 P2606 【[ZJOI2010]排列计数】
    题解 CF1095F 【Make It Connected】
    题解 CF1155E 【Guess the Root】
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/6889403.html
Copyright © 2011-2022 走看看