zoukankan      html  css  js  c++  java
  • HttpWebRequest 保存Cookies,模拟Session登录

     前面使用HttpWebRequest 对象可以抓取网页中一些资料,不过有些页面可以直接打开,而有些页面必登录之后才能打开,也就是在登录后保存登录信息在Session,这样就可以访问有权限的页面了。下面通过HttpWebRequest获取网页内容并保持session,最主要的就是存储cookie。第二次请求网页的时候把cookie传送过去,这样就可以访问有Session的页了。

           CookieContainer cookies = new CookieContainer();
            private void button1_Click(object sender, EventArgs e)
            {
                var str = "username=wzh&userpwd=1223";//登录名和密码
                var buf = Encoding.UTF8.GetBytes(str);
    
                var loginUrl="http://localhost:15993/home/login";//提交登录地址
                var postUrl="http://localhost:15993/home/Item";//此页需登录后才能访问
    
                HttpWebRequest res = (HttpWebRequest)HttpWebRequest.Create(new Uri(loginUrl));
                res.Method = "post";
                res.CookieContainer = cookies;
    
                //向提交流中写入信息
                var writeStream = res.GetRequestStream();
                writeStream.Write(buf, 0, buf.Length);
                writeStream.Close();
                writeStream.Dispose();
    
                res.GetResponse().Close();//此句完成登录,无此句无法得到cookie
    
                res = (HttpWebRequest)HttpWebRequest.Create(new Uri(postUrl));//具体session才能访问的页
                res.CookieContainer = cookies;//设置cookies
                var resStream = new StreamReader(res.GetResponse().GetResponseStream());//取到返回值
                textBox1.Text = resStream.ReadToEnd();//显示返回值
                resStream.Close();
                resStream.Dispose();
                res.Abort();
            }
  • 相关阅读:
    Django 框架 # 51
    Django 框架 介绍# 51
    前端之Bootstrap框架 # 50
    phpcms调用一个指定的栏目的url和栏目名称
    phpcms导航栏调用二级栏目
    彻底弄懂JS的事件冒泡和事件捕获
    toggle 方法的使用
    关于内层DIV设置margin-top不起作用的解决方案
    phpmyadmin导入数据库大小限制修改
    phpcms v9 的表单向导功能的使用方法
  • 原文地址:https://www.cnblogs.com/lunawzh/p/6842365.html
Copyright © 2011-2022 走看看