HttpWebRequest与HttpWebResponse进行数据采集时的注意点
一般的数据采集使用WebClient可以很方便的进行,但是一些比较复杂(指需要较多的设置请求标头,以及重定向)的采集一般会使用HttpWebRequest或HttpWebResponse.
在需要给当前请求附加Cookie时,一般可以使用
request.Headers.Add("Cookie", "ASPXSESSION=12345");
或者 使用类似下面的语句
CookieCollection cookies = container.GetCookies(logUri);
request.CookieContainer = new CookieContainer();
foreach (Cookie cookie in cookies)
{
cookie.Domain = dataUri.Host; //使用目标数据页的主机部分
request.CookieContainer.Add(cookie);
}
当然多数情况下我们会使用前一种, 需要注意的是同时设置这两个属性时,后一种 request.CookieContainer = new CookieContainer(); 会屏蔽掉前一种, 同时响应流中的resposne.Cookies可用, 使用Headers.Add("xxxxx")方式时,
你无法通过过response.Cookies 获取返回的Cookie信息(Session标志等), 不过两种方式多可以通过resposne.Headers["Set-Cookie"]获取返回的Cookie(session标志等)
使用 HttpWebRequest与HttpWebResponse获取Session标志
//注意当value中包含如 "&","=","+"时需要使用,
//HttpUtility.UrlEncode( "+++xxx为什么不编码也可以",Encoding.GetEncoding("GB2312")) 进行编码
//HttpUtility.UrlEncode(string) 默认使用UTF-8进行编码
byte[] data = Encoding.GetEncoding("GB2312").GetBytes("name1=value1&name2=value2&name3=value3");
HttpWebRequest request = HttpWebRequest.Create("http://www.xxx.com/Login.jsp") as HttpWebRequest;
request.AllowAutoRedirect = false;//禁止自动重定向
request.Method = "POST"; //使用post方法
request.ContentType = "application/x-www-form-urlencoded";//form提交时使用urlencode
request.ContentLength = data.Length;
//添加Cookie如果有必要
request.Headers.Add("Cookie", "ASPXSESSION=12345");
Stream uploadStream = request.GetRequestStream();
uploadStream.Write(data, 0, data.Length); //发送表单数据
uploadStream.Close();
HttpWebResponse resposne = request.GetResponse() as HttpWebResponse;
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
//获取反回的页面内容
string html = sr.ReadToEnd();
resposne.Close();
//获取Cookie(Session标志等) Jsp一般为JSESSIONID=DA205A5E8FA2CE1CC39F3DA94076CF4F
string session = resposne.Headers["Set-Cookie"];
resposne.Close();
HttpWebRequest与HttpWebResponse进行数据采集时的注意点相关推荐
- C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...
- HttpWebRequest以及HttpWebResponse
上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...
- 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录
之前看过某个同学的一篇有关与使用JSoup解析学校图书馆的文章,仔细一看,发现竟然是同校!!既然对方用的是java,那么我也就来个C#好了,虽然我的入门语言是java. C#没有JSoup这样方便的东 ...
- 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试
有时程序使用HttpWebRequest与HttpWebResponse实现HTTP的访问,但我们想测试它们不太容易实现.现在我们可以使用Moles框架来实现对它的单元测试.如果您还不了解Moles, ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用
C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebRequest 和 HttpWebResponse,来判断一个网页地址是否可以正常访问. 1 ...
- 利用HttpWebRequest和HttpWebResponse做黑客注射工具
利用HttpWebRequest和HttpWebResponse做黑客注射工具. using System; using System.Collections.Generic; using Syste ...
- C#使用HttpWebRequest和HttpWebResponse上传文件示例
C#使用HttpWebRequest和HttpWebResponse上传文件示例 1.HttpHelper类: 复制内容到剪贴板程序代码 using System; using System.Coll ...
- C#利用HttpWebRequest、HttpWebResponse调用12306接口,实现登录、查票、买票。
[免责申明]本文只为学习使用,若有用作商业.其他行为,与本人无关. 使用工具 - UI bootstrap - 后台C# - 插件 datetimepicker.js,select.js UI界面效果 ...
- PLC数据采集时的数据安全,以及PLC-Recorder对于数据的暂存和恢复功能
进行PLC数据采集时,当PLC数据采集到的数据不是直接存数据库或者转发出去时,就需要本地文件存储.实际上,文件存储是专业录波软件都会采取的方式,原因有两个:1.自己的文件存储,就不需要依赖数据库,软件 ...
最新文章
- mysql导入csv文件
- python学习笔记3—流程控制if、for、while
- python画饼图-从零开始学Python--matplotlib(饼图)
- 拷贝控制——拷贝控制和资源管理,交换操作,对象移动
- 一个需要原创精神的年代
- 变频电源的日常检查目录
- 学习云计算学哪种编程语言_您应该学习哪种编程语言?
- Python基础知识:字符串
- DEDECMS中,会员中心的常用知识
- ffmpeg 安装bzlib_编译安装ffmpeg 要支持xvid、x264、mp3、ogg、amr、faac
- Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
- 适合计算机类研究生参加的比赛
- UG NX 12 内部草图和外部草图的区别
- 美国语言教学5c标准,美国外语教学(一)——5C目标
- 强大的头像制作神器微信小程序
- 厉害了!百度智能云NIRO Pro智能机器人半年内连获三项产品设计大奖
- 【信息安全】信息安全三要素CIA
- 读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤波,比较其锐化和平滑效果。
- 如何解决”/”应用程序中的服务器错误
- stable_sort的含义