【转】HttpWebRequest 保持session
通过HttpWebRequest获取网页内容并保持session,最主要的就是存储cookie。这里使用了一个静态变量m_Cookie用来存储cookie的内容。第二次请求网页的时候把cookie传送过去,这样就可以保持session。
- public partial class RequestPage : System.Web.UI.Page
- {
- private static CookieContainer m_Cookie = new CookieContainer();
- private string m_Url = "http://localhost/HttpRequestTest/SessionPage.aspx";
- protected void Page_Load(object sender, EventArgs e)
- {
- string content = GetPageContent();
- //string content = GetPageContent(m_Url);
- Label1.Text = content;
- }
- /// <summary>
- /// 获取页面内容,保存CookieHeader
- /// </summary>
- /// <returns></returns>
- private string GetPageContent()
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Url);
- request.CookieContainer = m_Cookie;
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- string cookieheader = request.CookieContainer.GetCookieHeader(new Uri(m_Url));
- m_Cookie.SetCookies(new Uri(m_Url), cookieheader);
- Stream stream = response.GetResponseStream();
- StreamReader reader = new StreamReader(stream);
- string result = reader.ReadToEnd();
- stream.Close();
- reader.Close();
- response.Close();
- return result;
- }
- /// <summary>
- /// 获取页面内容,存储CookieContainer
- /// </summary>
- /// <param name="url">被请求页面的url</param>
- /// <returns>返回页面内容</returns>
- public string GetPageContent(string url)
- {
- StringBuilder result = new StringBuilder("");
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); ;
- HttpWebResponse reponse = null;
- try
- {
- request.CookieContainer = m_Cookie;
- reponse = (HttpWebResponse)request.GetResponse();
- m_Cookie = request.CookieContainer;
- Stream rspStream = reponse.GetResponseStream();
- StreamReader sr = new StreamReader(rspStream, System.Text.Encoding.Default);
- //获取数据
- Char[] read = new Char[256];
- int count = sr.Read(read, 0, 256);
- while (count > 0)
- {
- result.Append(read, 0, count);
- count = sr.Read(read, 0, 256);
- }
- }
- catch (Exception e)
- {
- result.Append(e.Message);
- }
- finally
- {
- if (reponse != null)
- {
- reponse.Close();
- }
- }
- return result.ToString();
- }
- }
【转】HttpWebRequest 保持session的更多相关文章
- HttpWebRequest 保存Cookies,模拟Session登录
前面使用HttpWebRequest 对象可以抓取网页中一些资料,不过有些页面可以直接打开,而有些页面必登录之后才能打开,也就是在登录后保存登录信息在Session,这样就可以访问有权限的页面了.下面 ...
- HttpWebRequest调用WebService后台需要Session信息问题的解决办法
今天在用HttpWebRequest调用后台ASP.NET 的WebService方法时遇到了一个问题,后台的WebService方法里使用到了Session对象中的用户信息,而Session对象中的 ...
- web也是区分前端与后端的,session\cookie辨析
<1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...
- 通过HttpWebRequest请求与HttpWebResponse响应方式发布接口与访问接口
一.API接口的编码 1.首页的页面代码: protected void Page_Load(object sender, EventArgs e) { /* * 请求路径:http://xxxx/i ...
- C#的提交表单方式主要有两种WebClient与HttpWebRequest
根据黄聪:C#模拟网站页面POST数据提交表单(转) using System; using System.Collections.Generic; using System.IO; using Sy ...
- C#获得和发送网站Session
request = (HttpWebRequest)WebRequest.Create(url); if (Const. ...
- 利用HttpWebRequest和HttpWebResponse获取Cookie
之前看过某个同学的一篇有关与使用JSoup解析学校图书馆的文章,仔细一看,发现竟然是同校!!既然对方用的是java,那么我也就来个C#好了,虽然我的入门语言是java. C#没有JSoup这样方便的东 ...
- C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...
- WebApi 能支持Session
由于项目实际需要,我希望让WebApi服务也能支持Session,所以便查找资料按照网上的方法开始着手实验. 然后就有了以下的代码,主要是说让WebApi支持Session,要重写Global.asa ...
随机推荐
- System.Data.OracleClient.dll方式操作oracle数据库
System.Data.OracleClient.dll方式操作oracle数据库 一.查询语句: using (OracleConnection conn = new OracleConnectio ...
- iperf3网络测试工具
一.简介: iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP.UDP.SCTP传输协议,可在Windows.Mac OS X.Linux.FreeBSD等各种平台使用,是一个简单 ...
- Echart自定义y轴刻度信息1
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- ubuntu设置root登录ssh
1. 默认不带ssh,所以需要安装一下ssh sudo apt install openssh-server 2 .设置root密码,ubuntu默认root密码是随机的,需要重置一下 sudo pa ...
- 洛谷P5264 【模板】多项式三角函数
题面 传送门 题解 据说有一个叫做欧拉公式的东西 \[e^{ix}=\cos(x)+i\sin(x)\] 别问我为啥我今天第一次看到它 那么显然也有 \[e^{-ix}=\cos(x)-i\sin(x ...
- Linux 下四条高大命令(计划360检测脚本)
查看进程,按内存从大到小 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr 查看进程,按CPU利用率从大到小排序 ps -e -o "% ...
- UDP与IP分片
一.引言  UDP是简单的面向数据报的运输层协议.UDP不提供可靠性:它负责把应用程序传给IP层的数据发送出去,不保证能导到目的地. 二.UDP首部  端口号表示发送进程和接受进程.由于IP层已经 ...
- xml约束技术之dtd
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.这篇文章作简单介绍下DTD的用法.想学习完整的请点击下面w3c的教程. 1.DTD官方教程 ##2.xml约束技术: DTD约束:语法相 ...
- nginx高性能WEB服务器系列之三版本升级
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- 如果你创建了类似于下面的 Twitter 元素,那么它相关的类定义是啥样子的?
代码: <Twitter username='tylermcginnis33'> {(user) => user === null ? <Loading /> : < ...