博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【.Net基础03】HttpWebRequest模拟浏览器登陆
阅读量:4682 次
发布时间:2019-06-09

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

【原理】

【代码】

1 private void button2_Click(object sender, EventArgs e) 2         { 3             string url =“请求的地址”  4             indata = “传入的数据&传入的数据”; 5             string outdata = ""; 6             byte[] data = System.Text.Encoding.UTF8.GetBytes(indata); 7  8             //新建一个HttpWebRequest  9             HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);10 11             //一定要设置ContentType12             myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";13             myHttpWebRequest.ContentLength = data.Length;14             myHttpWebRequest.Method = "POST";15 16             //新建一个CookieContainer来存放Cookie集合 17             CookieContainer myCookieContainer = new CookieContainer();18 19             //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 20             myHttpWebRequest.CookieContainer = myCookieContainer;21 22             //把数据写入HttpWebRequest的Request流 23             Stream myRequestStream = myHttpWebRequest.GetRequestStream();24             myRequestStream.Write(data, 0, data.Length);25             StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8"));26 27             //关闭打开对象 28             myRequestStream.Flush();29             myRequestStream.Close();30 31             //新建一个HttpWebResponse 32             HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();33 34             //把数据从HttpWebResponse的Response流中读出 35             Stream myResponseStream = myHttpWebResponse.GetResponseStream();36             StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));37             outdata = myStreamReader.ReadToEnd();38 39             //关闭打开的对象 40             myStreamReader.Close();41             myResponseStream.Close();42 43             //显示"登录" 44             //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 45             myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);46 47             //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 48             myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();49 50             //读取登陆后的内容51             myResponseStream = myHttpWebResponse.GetResponseStream();52             myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));53             outdata = myStreamReader.ReadToEnd();54 55             //关闭打开的对象 56             myStreamReader.Close();57             myResponseStream.Close();58 59             Console.WriteLine(outdata);60             this.webBrowser1.DocumentText = outdata;61         }
View Code

 

【备注】

当Cookie被设置为HttpOnly时,此方法就无法获取Cookie了,关于HttpOnly的限制,下一篇文章将继续研究。

转载于:https://www.cnblogs.com/fb-boy/p/3532502.html

你可能感兴趣的文章
Flex 4.x 下载进度不出现问题解决办法
查看>>
Vue之自定义组件的v-model
查看>>
Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错...
查看>>
解决Xcode在ipad/iphone 9.2 系统真机测试时出现could not find developer disk image问题
查看>>
基于asp.net的ajax分页
查看>>
分布式事务,两阶段提交协议,三阶段提交协议
查看>>
php/js获取客户端mac地址的实现代码
查看>>
float 在父元素为inline元素的情况
查看>>
git的基本使用
查看>>
MDK中编译程序后Program Size详解
查看>>
C++设计模式-Strategy策略模式
查看>>
MySQL中优化sql语句查询常用的30种方法
查看>>
字符流
查看>>
weight权重的属性
查看>>
Property和attribute的区别[转]
查看>>
iPhone4 手机应用相关
查看>>
Linux Unix shell 编程指南学习笔记(第四部分)
查看>>
idea的修改文件变颜色
查看>>
linux查看端口号是否被占用
查看>>
response实现文件的下载
查看>>