【.Net基础03】HttpWebRequest模拟浏览器登陆

【原理】

【代码】

 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             //一定要设置ContentType
12             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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值