【转】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 ...
随机推荐
- jquery datepicker 中文
<script type="text/javascript"> jQuery(function(){ $.datepicker.regional['zh-CN'] = ...
- 《html5 从入门到精通》读书笔记(三)
二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...
- vmware虚拟机监控数据
在vsphere产品中内建一个监控所有虚机包括主机资源的插件,叫做vcenter servcie status,这个插件的主要功能是记录当前虚拟机资源的cpu.硬盘.内存和网络等相关信息.通过它可以查 ...
- Python 串口通信 GUI 开发
在项目中遇到树莓派串口通信问题.由于本人一直从事.net 开发,希望将树莓派系统换成Win10 IOT版.但是在测试过程中出现无法找到串口的问题.最终也没有解决.最终按照领导要求,linux (了解不 ...
- 使用.net core 自带DI框架实现 延迟加载
在某些情况,我们希望能延迟一个依赖的初始化.如果使用的是autofac,我们可以通过注入Lazy来实现. 我们对 autofac GitHub上提供的一个例子进行进行简单改造,跑起来看看. 原Exam ...
- centos7 安装git
centos7下git的安装和配置 git的安装: yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 ...
- 小程序:怎么在两层列表循环(wx:for)的时候判断是否为最后一个元素
问题说明: 如下图所示,在箭头所指的最后一个选项的底线与底部操作栏的上边线重叠,需要清除掉最后一个元素的底线: 想到的解决方案: 通过判断是否为最后一个元素,然后通过条件渲染(wx:if)动态添加对 ...
- [转] 以普通用户启动的Vim如何保存需要root权限的文件
[转] 以普通用户启动的Vim如何保存需要root权限的文件 在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'rea ...
- git 常用口令
版本管理 svn git cd d 切换目录 cd www cd git git clone 一个地址 git status 获取修改的内容 git add * 上传修改的内容 git commi ...
- MUI 滚动插件使用
在Vue中 使用MUI滚动插件 官方文档地址:http://dev.dcloud.net.cn/mui/ui/#scroll 示例:初始化scroll控件: mui('.mui-scroll-wrap ...