关于StreamReader.ReadToEnd方法
以前写抓取网页的代码喜欢用ReadToEnd,因为简单省事,后来发现,在爬取网页的时候,如果网速很慢,ReadToEnd超时的几率很大。使用Read改写后,超时几率大大减小,完整代码如下:
/// <summary>
/// HttpPost
/// </summary>
public static string HttpPost(string url, string data)
{
byte[] bArr = ASCIIEncoding.UTF8.GetBytes(data); // 设置参数
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.CookieContainer = m_Cookie;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bArr.Length;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"; Stream postStream = request.GetRequestStream();
postStream.Write(bArr, , bArr.Length);
postStream.Close(); //发送请求并获取相应回应数据
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
Stream responseStream = response.GetResponseStream();
//返回结果网页(html)代码
MemoryStream memoryStream = new MemoryStream();
bArr = new byte[];
int size = responseStream.Read(bArr, , (int)bArr.Length);
while (size > )
{
memoryStream.Write(bArr, , size);
size = responseStream.Read(bArr, , (int)bArr.Length);
Thread.Sleep();
}
string content = Encoding.UTF8.GetString(memoryStream.ToArray());
return content;
}
代码中Thread.Sleep(1);也可以去掉。
关于StreamReader.ReadToEnd方法的更多相关文章
- StreamReader 的ReadLine,Read,ReadToEnd方法
1.ReadLine() 当遇到\n \r 或者是\r\n的时候 此方法返回这前面的字符串,然后内部的指针往后移一位下次从新的地方开始读,直到遇到数据的结尾处返回null,所以经常这样使用 ...
- .NET LINQ分析AWS ELB日志避免996
前言 小明是个单纯的.NET开发,一天大哥叫住他,安排了一项任务: "小明,分析一下我们超牛逼网站上个月的所有AWS ELB流量日志,这些日志保存在AWS S3上,你分析下,看哪个API的响 ...
- C#常用字符串加解密方法封装
C#中常用的字符串加密.解密方法封装,包含只加密但不解密的方法.收藏起来备用. //方法一 //须添加对System.Web的引用 //using System.Web.Security; /// & ...
- 快递api网接口快递调用方法
----------------实体类 [DataContract] public class SyncResponseEntity { public SyncResponseEntity() { } ...
- WPF RichTextBox读取存储文本的方法和常用属性
1. 取得已被选中的内容: (1)使用 RichTextBox.Document.Selection属性(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Tex ...
- [搜片神器]winform程序自己如何更新自己的方法代码
DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 国外测试 ...
- C#中常用的字符串加密,解密方法封装,包含只加密,不解密的方法
//方法一//须添加对System.Web的引用//using System.Web.Security;/// <summary>/// SHA1加密字符串/// </summary ...
- ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
实用类:UtilityClass 包含如下方法 判断对象是否为空或NULL,如果是空或NULL返回true,否则返回false 验证手机号是否正确 13,15,18 验证邮箱 验证网址 MD5加密,返 ...
- 通过WebClient/HttpWebRequest实现http的post/get方法
///<summary>/// 通过WebClient类Post数据到远程地址,需要Basic认证: /// 调用端自己处理异常 ///</summary>///<par ...
随机推荐
- 2_bootstrap的环境搭建
2.bootstrap环境搭建 2.1.下载资源 中文官网地址:http://d.bootcss.com/bootstrap-3.3.5.zip http://www.bootcss.com 2.2. ...
- linux下创建具有root权限的账户
http://blog.chinaunix.net/uid-24631445-id-2981034.html
- UCI一位搞theory的教授列的一些数学方面的比较趣味性的网页
http://www.ics.uci.edu/~eppstein/recmath.html 据说是recreational的,没具体看,先收藏下来.
- leetcode172
public class Solution { public int TrailingZeroes(int n) { ) { ; } else { ; var y = TrailingZeroes(x ...
- 「小程序JAVA实战」小程序的横向视频和页面拦截(59)
转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudehengxiangshipinheyemianlanjie58/ ...
- Direcshow相关资料
CCapture directshow 视频捕获类: http://blog.csdn.net/xgx198831/article/details/7284618 ICaptureGraphBuild ...
- spring学习---day01
1,Spring Boot项目在启动的时,修改默认图标: 在src/main/resources目录下新建banner.txt文件,然后将自己的图案黏贴进去即可.ASCII图案可通过网站http:// ...
- HBase安装和启动
目录 认识HBase 前期准备 1. 解压HBase 2. 修改3个配置文件(配置文件目录:hbase-0.96.2-hadoop2/conf/) 3. 将hadoop的hdfs-site.xml和c ...
- linux 正则表达式
redis-cli INFO|tr -d '\r'|egrep -v '^(#.*)?$'|sed -E 's/^([^:]*):(.*)$/redisInfo[\1]="\2"/ ...
- Python运维开发基础02-语法基础
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...