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 = ;
while (count > )
{
int n = reciveStream.Read(byteData, offset, count);
if (n == )
{
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,都建议根据具体网页内容,指定编码,不然会出现乱码。

HttpWebRequest、HttpWebResponse获取网页的更多相关文章

  1. asp.net 利用HttpWebRequest自动获取网页编码并获取网页源代码

    /// <summary> /// 获取源代码 /// </summary> /// <param name="url"></param& ...

  2. C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)

    获取网页数据有很多种方式.在这里主要讲述通过WebClient.WebBrowser和HttpWebRequest/HttpWebResponse三种方式获取网页内容. 这里获取的是包括网页的所有信息 ...

  3. C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)

    一.通过WebClient获取网页内容 这是一种很简单的获取方式,当然,其它的获取方法也很简单.在这里首先要说明的是,如果为了实际项目的效率考虑,需要考虑在函数中分配一个内存区域.大概写法如下 //M ...

  4. C# HttpWebRequest 绝技 根据URL地址获取网页信息

    如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地 ...

  5. c#利用HttpWebRequest获取网页源代码

    c#利用HttpWebRequest获取网页源代码,搞了好几天终于解决了,直接获取网站编码进行数据读取,再也不用担心乱码了! 命名空间:Using System.Net private static ...

  6. 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录

    利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录 tring cookie = response.Headers.Get("Set-Cookie ...

  7. 黄聪:C#获取网页HTML内容的三种方式

    C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse. 方法一:使用WebClient static void ...

  8. C# 获取网页信息

    获取网页源码 ///通过HttpWebResponse public string GetUrlHtml(string url) { string strHtml = string.Empty; Ht ...

  9. c#利用WebClient和WebRequest获取网页源代码的比较

    前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...

随机推荐

  1. 第一篇:初识ASP.NET控件开发_第三节:“生死有序”的控件生命周期

    一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然 ...

  2. java 中获得 资源文件方法

    1 java 中获取资源文件的方法 项目目录如下 获取当前项目的目录路径 方法一:使用类名 MergeDocHandler.class.getClassLoader().getResource(&qu ...

  3. 频分复用(Frequency Division Multiplexer)

    作者:桂. 时间:2017年12月19日20:43:04 链接:http://www.cnblogs.com/xingshansi/p/8067839.html 前言 主要记录基本的频分复用原理,以及 ...

  4. logstash 如何处理 mongodb 导出来的 _id value数据。 how to custom fields of logstash by mongo mapreduce exported data.(example format: {_id:"xxx"} , value:{})

    input { file { path => "c:\aa.json" start_position => "beginning" #sincedb ...

  5. Mongodb是用Sum 和Where条件

    Sum 按照条件求和 db.aa.aggregate([ { $group: { _id: null, total: { $sum: "$value" } } }, //$valu ...

  6. LeetCode Permutaions II

    LeetCode解题之Permutaions II 原题 输出一个有反复数字的数组的全排列. 注意点: 反复数字的可能导致反复的排列 样例: 输入: nums = [1, 2, 1] 输出: [[1, ...

  7. vim常忘命令

    1.复制指定行到当前光标的下一行. #假设当前光标在10行,想把第5行复制到第11行 :5copy. #copy命令有2种简写'co'和't',所以也可以写成下面的格式 :5co. :5t. 参考:h ...

  8. WCF返回null超时

    Message.CreateMessage(msg.Version, msg.Headers.Action + "Response", DealObject("错误信息& ...

  9. android 覆盖安装问题

    1.android中覆盖安装不会导致data/data/package下的数据被删除 2.数据库会有数据库的一套升级机制 3.sharepreference 不会被覆盖,如果在app中有使用Key记录 ...

  10. 行为类模式(十一):访问者(Visitor)

    定义 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. UML 优点 符合单一职责原则:凡是适用访问者模式的场景中,元素类中需要封装在访问者中的 ...