httpRequest.CookieContainer= cookie 与 httpRequest.Headers.Add("Cookie", cookie)
这两天做了一个获取cookie并且携带此cookie去请求另外一个url地址,中间携带cookie用了两种方式:
1. httpRequest.CookieContainer= cookie (此cookie为一个cookie容器对象)
2.httpRequest.Headers.Add("Cookie", cookie) (此cookie为一个cookie字符串) 测试结果:1种方式cookie失效并且丢失。2种方式携带成功并且可以成功显示已登录。 原因待查,记录下。
说明:也可能cookie容器设置的方式有问题。 附上代码: public class Login
{
public string GetCookie(string postString, string postUrl)
{ CookieContainer cookie = new CookieContainer(); HttpWebRequest httpRequset = (HttpWebRequest)HttpWebRequest.Create(postUrl);//创建http 请求
httpRequset.CookieContainer = cookie;//设置cookie
httpRequset.Method = "POST";//POST 提交
httpRequset.KeepAlive = true;
httpRequset.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36";
httpRequset.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
httpRequset.ContentType = "application/x-www-form-urlencoded";//以上信息在监听请求的时候都有的直接复制过来
httpRequset.Referer = "http://my.qianlima.com/login.jsp";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postString);
httpRequset.ContentLength = bytes.Length;
Stream stream = httpRequset.GetRequestStream();
stream.Write(bytes, , bytes.Length);
stream.Close();//以上是POST数据的写入 HttpWebResponse httpResponse = (HttpWebResponse)httpRequset.GetResponse();//获得 服务端响应
var str = cookie.GetCookieHeader(httpRequset.RequestUri);
return str;//拿到cookie
} public string GetContent(string cookie, string url)
{
string content;
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Headers.Add("Cookie", cookie);
httpRequest.Referer = url;
httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36";
httpRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.Method = "GET"; HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); using (Stream responsestream = httpResponse.GetResponseStream())
{ using (StreamReader sr = new StreamReader(responsestream, System.Text.Encoding.Default))
{
content = sr.ReadToEnd();
}
} return content;
}
}
|
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
|
译文
原文
|
CookieContainer 类
为 CookieCollection 对象的集合提供容器。
命名空间: System.Net
程序集: System(System.dll 中)
System.Net::CookieContainer
| 名称 | 说明 | |
|---|---|---|
![]() |
CookieContainer() |
初始化 CookieContainer 类的新实例。 |
![]() |
CookieContainer(Int32) |
使用指定的表示容器可以包含的 Cookie 实例数的值初始化 CookieContainer 类的新实例。 |
![]() |
CookieContainer(Int32, Int32, Int32) |
使用指定属性初始化 CookieContainer 类的新实例。 |
| 名称 | 说明 | |
|---|---|---|
![]() |
Capacity |
获取和设置 CookieContainer 可以包含的 Cookie 实例数。 |
![]() |
Count |
获取 CookieContainer 当前包含的 Cookie 实例数。 |
![]() |
MaxCookieSize |
表示 Cookie 的最大允许长度。 |
![]() |
PerDomainCapacity |
获取和设置 CookieContainer 可以在每个域包含的 Cookie 实例数。 |
| 名称 | 说明 | |
|---|---|---|
![]() |
Add(Cookie^) | |
![]() |
Add(CookieCollection^) |
将 CookieCollection 的内容添加到 CookieContainer 中。 |
![]() |
Add(Uri^, Cookie^) |
将 Cookie 添加到特定 URI 的 CookieContainer 中。 |
![]() |
Add(Uri^, CookieCollection^) |
将 CookieCollection 的内容添加到特定 URI 的 CookieContainer 中。 |
![]() |
Equals(Object^) |
确定指定的对象是否等于当前对象。(从 Object 继承。) |
![]() |
Finalize() |
在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(从 Object 继承。) |
![]() |
GetCookieHeader(Uri^) |
获取 HTTP Cookie 标头,该标头包含表示与特定 URI 关联的 Cookie 实例的 HTTP Cookie。 |
![]() |
GetCookies(Uri^) |
获取包含与特定 URI 关联的 Cookie 实例的 CookieCollection。 |
![]() |
GetHashCode() |
作为默认哈希函数。(从 Object 继承。) |
![]() |
GetType() | |
![]() |
MemberwiseClone() | |
![]() |
SetCookies(Uri^, String^) |
将 HTTP Cookie 标头中的一个或多个 Cookie 的 Cookie 实例添加到特定 URI 的 CookieContainer 中。 |
![]() |
ToString() |
返回表示当前对象的字符串。(从 Object 继承。) |
| 名称 | 说明 | |
|---|---|---|
![]() ![]() |
DefaultCookieLengthLimit |
表示 CookieContainer 可以包含的 Cookie 实例的默认最大大小(以字节为单位)。此字段为常数。 |
![]() ![]() |
DefaultCookieLimit |
表示 CookieContainer 可以包含的 Cookie 实例的默认最大数目。此字段为常数。 |
![]() ![]() |
DefaultPerDomainCookieLimit |
表示 CookieContainer 可以在每个域引用的 Cookie 实例的默认最大数目。此字段为常数。 |
CookieContainer 是为 Cookie 类的实例提供存储空间的数据结构,该结构以类似于数据库的方式来进行访问。 CookieContainer 具有容量限制,此限制在创建容器或通过属性更改容器时设置。
Cookie 类的实例被添加到基于其起始 URI 的容器。它会被添加到与该 URI 关联的内部 CookieCollection。 Cookie 作为 CookieCollection 或作为可用于提交 HTTP WebRequest 的字符串,从基于该 URI 的容器中进行检索。
CookieContainer 有三项属性用于管理容器的内容容量:Capacity、MaxCookieSize 和 PerDomainCapacity。这些值的默认设置分别为 300、4096 和 20。当一个 Cookie 被添加到容器中时,这些属性将用于确定是否应丢弃已包含在 CookieContainer 中的 Cookie,以便给新的 Cookie 让出空间。 CookieContainer 对每一次添加进行跟踪,以确保不会超过 Capacity 限制或 PerDomainCapacity 限制。如果超过这两项限制或其中一项限制,则将移除 CookieContainer 所包含的 Cookie 实例。首先,所有过期的 Cookie 都将被移除。如果必须进一步收回容量,则清除最早使用的CookieCollection。
httpRequest.CookieContainer= cookie 与 httpRequest.Headers.Add("Cookie", cookie)的更多相关文章
- cookie导读,理解什么是cookie
一.cookie导读,理解什么是cookie 1.什么是cookie:cookie是一种能够让网站服务器把少量数据(4kb左右)存储到客户端的硬盘或内存.并且读可以取出来的一种技术. 2. ...
- Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie
Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...
- 易懂 易上手的cookie 最简单明了 js中cookie的使用方法及教程
今天项目中需要用到cookie 看到我的cookie不行了 大喊一声我曹 怎么可以这样 我就疯狂的在网上找 找啊 找 但是我感觉都太官方了 废话不说 看栗子 1.引入jQuery与jQuery.C ...
- jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码
下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...
- Python中Cookie的处理(一)Cookie库
Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: Set-Cookie:session= ...
- 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??
js中通过docment.cookie获取到的内容不完整!在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取.是否有其他办 ...
- 关于设置cookie同源,axios请求加上cookie
一个有cookie 一个没有 这是为啥!! axios都设置了的为true允许携带cookie 大佬答疑解惑:==>cookie同源域名才有啊,在Application看看cookie的pat ...
- js中实现cookie的增删改查(document.cookie的使用详情)
一.设置cookie的值 1.每个cookie都是一个名称/值对,名称/值对用等号连接,并将该名称/值对赋值给document.cookie即可.如:document.cookie="id= ...
- Cookie文件说明及IE的Cookie文件格式
1.Cookie文件的实质 Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内.客户端会将它保存在本地机器上(如IE便会保 ...
随机推荐
- 安装 redis [standlone模式]
下载redis版本:https://redis.io/download 我下载的是:redis-3.0.6 下载后,在linux上 tar -zxvf redis-3.0 ...
- bbb u-boot SPI 启动
beagle bone black的u-boot编译时已经为SPI准备好了 MLO.byteswap,这个文件应该直接写入到SPI flash的偏移0位置,根据am335x的手册,SPI内可以保存多份 ...
- linux svn 更新地址
进行你所工作的svn映射到本地的目录中.在终端下运行$svn switch --relocate http://oldPath http://newpath.系统提示输入用户名,密码.重新输入后,即可 ...
- jfreechart折线图 demo
public class ChartUtil { public static ChartUtil chartUtil; private RoomViewsDataService roomViewsDa ...
- ansible的异步执行
ansible任务的异步执行 96 茶客furu声 关注 2016.07.12 01:40* 字数 458 阅读 1777评论 0喜欢 4 ansible方便在于能批量下发,并返回结果和呈现.简单.高 ...
- Frogger - poj 2253 (Dijkstra)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28802 Accepted: 9353 Description Fr ...
- vs2013中opencv的配置
下面开始介绍如何配置,我用的系统是win8.1 64位系统,vs用的是vs3013 ultimate,先到官网下载opencv 我用的的版本是最新的版本3.0 ALPHA,下载下来直接执行即可,实际上 ...
- Hibernate3中generator标签使用
在XXX.hbm.xml映射配置文件中定义<generator class="native"/>标签是为了告诉Hibernate框架使用什么方式去生成主键class对应 ...
- mybaits返回插入成功后的自增值
mybaits返回插入成功后的自增值 在项目中,我们经常遇到这样的情况:insert语句成功后,需要自增的id值,这个时候,我们可以通过mybatis的 useGeneratedKeys 来实现,具体 ...
- [Catalan数]1086 栈、3112 二叉树计数、3134 Circle
1086 栈 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 栈是计算机中 ...




