一般的数据采集使用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进行数据采集时的注意点相关推荐

  1. C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse

    上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...

  2. HttpWebRequest以及HttpWebResponse

    上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...

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

    之前看过某个同学的一篇有关与使用JSoup解析学校图书馆的文章,仔细一看,发现竟然是同校!!既然对方用的是java,那么我也就来个C#好了,虽然我的入门语言是java. C#没有JSoup这样方便的东 ...

  4. 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试

    有时程序使用HttpWebRequest与HttpWebResponse实现HTTP的访问,但我们想测试它们不太容易实现.现在我们可以使用Moles框架来实现对它的单元测试.如果您还不了解Moles, ...

  5. C# -- HttpWebRequest 和 HttpWebResponse 的使用

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebRequest 和 HttpWebResponse,来判断一个网页地址是否可以正常访问. 1 ...

  6. 利用HttpWebRequest和HttpWebResponse做黑客注射工具

    利用HttpWebRequest和HttpWebResponse做黑客注射工具. using System; using System.Collections.Generic; using Syste ...

  7. C#使用HttpWebRequest和HttpWebResponse上传文件示例

    C#使用HttpWebRequest和HttpWebResponse上传文件示例 1.HttpHelper类: 复制内容到剪贴板程序代码 using System; using System.Coll ...

  8. C#利用HttpWebRequest、HttpWebResponse调用12306接口,实现登录、查票、买票。

    [免责申明]本文只为学习使用,若有用作商业.其他行为,与本人无关. 使用工具 - UI bootstrap - 后台C# - 插件 datetimepicker.js,select.js UI界面效果 ...

  9. PLC数据采集时的数据安全,以及PLC-Recorder对于数据的暂存和恢复功能

    进行PLC数据采集时,当PLC数据采集到的数据不是直接存数据库或者转发出去时,就需要本地文件存储.实际上,文件存储是专业录波软件都会采取的方式,原因有两个:1.自己的文件存储,就不需要依赖数据库,软件 ...

最新文章

  1. mysql导入csv文件
  2. python学习笔记3—流程控制if、for、while
  3. python画饼图-从零开始学Python--matplotlib(饼图)
  4. 拷贝控制——拷贝控制和资源管理,交换操作,对象移动
  5. 一个需要原创精神的年代
  6. 变频电源的日常检查目录
  7. 学习云计算学哪种编程语言_您应该学习哪种编程语言?
  8. Python基础知识:字符串
  9. DEDECMS中,会员中心的常用知识
  10. ffmpeg 安装bzlib_编译安装ffmpeg 要支持xvid、x264、mp3、ogg、amr、faac
  11. Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
  12. 适合计算机类研究生参加的比赛
  13. UG NX 12 内部草图和外部草图的区别
  14. 美国语言教学5c标准,美国外语教学(一)——5C目标
  15. 强大的头像制作神器微信小程序
  16. 厉害了!百度智能云NIRO Pro智能机器人半年内连获三项产品设计大奖
  17. 【信息安全】信息安全三要素CIA
  18. 读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤波,比较其锐化和平滑效果。
  19. 如何解决”/”应用程序中的服务器错误
  20. stable_sort的含义

热门文章

  1. 快速了解Druid -- 实时大数据分析软件
  2. 用PHP写出显示客户端IP与服务器IP的代码
  3. 排序算法之——插入排序
  4. C++ Primer: 1. 初识输入和输出
  5. tensorRT 使用过程中的Bug记录
  6. 必做作业2:目前比较火的直播软件调研
  7. crawler碎碎念5 豆瓣爬取操作之登录练习
  8. Linux中crontab无法执行java程序的问题
  9. 浅谈OCR之Tesseract
  10. 百度云世界里的“七种武器”:PCS、BAE、Site App、ScreenX等