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便会保 ...
随机推荐
- IIS8应用池重启脚本
重启 IIS8 应用程序池的批处理 批处理很简单:c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP ...
- Java NIO —— Buffer(缓冲区)
Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.注意:Buffer是非线程安全类. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffer ...
- 26计算限制的异步操作01-CLR
由CLR via C#(第三版) ,摘抄记录... 异步优点:在GUI应用程序中保持UI可响应性,以及多个CPU缩短一个耗时计算所需的时间. 1.CLR线程池基础:为提高性能,CLR包含了代码来管理他 ...
- PHP-Manual的学习----【语言参考】----【类型】-----【Interger类型】
2017年7月20日15:48:46Integer 整型 1.什么是整数?正数 0 负数2.整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +). 二进制表达的 ...
- drupal7 使用(hook_preprocess_HOOK)向各个主题模版里面传递变量
函数地址:hook_preprocess_HOOK 1 首先解释下hook_preprocess_HOOK这个钩子的含义: hook _ preprocess _ H ...
- CentOS升级Python2.6到Python2.7
个人博客:https://blog.sharedata.info/ 貌似CentOS 6.X系统默认安装的Python都是2.6版本的?平时使用以及很多的库都是要求用到2.7版本或以上,所以新系统要做 ...
- extendgcd模板
看了数论第一章,终于搞懂了扩展欧几里德,其实就是普通欧几里德的逆推过程. // ax+by = gcd(a,b) ->求解x,y 其中a,b不全为0,可以为负数// 复杂度:O(log2a)vo ...
- CSS 布局实例系列(三)如何实现一个左右宽度固定,中间自适应的三列布局——也聊聊双飞翼
今天聊聊一个经典的布局实例: 实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化 可能很多朋友已经笑了,这玩意儿通过双飞翼布局就能轻松实现.不过,还请容我在双飞 ...
- Linux环境安装Nginx详细步骤
1.yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了yum install gcc patch libffi-devel python-devel zlib-devel bzip ...
- 我的Android进阶之旅------>启动Activity的标准Action和标准Category
Android内部提供了大量标准的Action和Category常量. 除了参考本文外,您还可以参考了以下链接: http://developer.android.com/reference/andr ...




