博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpWebRequest、HttpWebResponse获取网页
阅读量:6787 次
发布时间:2019-06-26

本文共 1450 字,大约阅读时间需要 4 分钟。

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,都建议根据具体网页内容,指定编码,不然会出现乱码。

转载地址:http://zsbgo.baihongyu.com/

你可能感兴趣的文章
mysql主从同步
查看>>
微信机器人高级版常见问题汇总
查看>>
容器技术|Docker三剑客之docker-machine
查看>>
Masonry 第三方框架页面自动布局
查看>>
博客转移声明
查看>>
利用论坛营销推广的完美“6步曲”
查看>>
不是所有的视频外链都是高质量的
查看>>
依赖和关联的区别
查看>>
DELL服务器硬件错误检查
查看>>
JD模拟用户登录(保持session)
查看>>
iOS之简单瀑布流的实现
查看>>
rsync + lsyncd 数据同步
查看>>
sublimeText3 设置格式化代码快捷键
查看>>
mysql 事务
查看>>
PHP语法
查看>>
电脑网络布线中会遇到的十大陷阱
查看>>
XGBOOST原理解析
查看>>
前端传递json数据给后台
查看>>
什么样的Web开发框架才是好的前端框架
查看>>
【git命令】git-rebase
查看>>