.NET 4.5 HttpClient 中使用Cookie
为了使用.NET 4.5的HttpClient从WIN2K3换成了WIN7。装VS2010,结果告诉我VS2010不支持.NET 4.5。又装VS2012,接着装.NET FRAMEWORK 4.5.2。结果第一次打开VS2012创建项目。提示我错误。
无奈求助度娘,顺利解决。打个补丁搞定。于是开始摸索HttpClient如何使用。网上的介绍还真是少的可怜。。居然没找到一个使用COOKIE的列子。最后研究了半天终于找到地方了。
async void Navigate(string uri)
{
Uri _uri = new Uri(uri);
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip}; // expires=Thu, 这句有误,不能出现逗号。去掉逗号也报错。所以要吧expires整句去掉,一直到分号。
//handler.CookieContainer.SetCookies(new Uri(uri), "BAIDUID=88F2FC4567899A8D5421A5398085F91:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com"); //创建HttpClient(注意传入HttpClientHandler)
using (var http = new HttpClient(handler))
{
//await异步等待回应
CookieCollection cookie;
var response = await http.GetAsync(_uri); // 获取服务器返回的Cookie(部分COOKIE无法记录到HttpClientHandler的CookContainer中,可以手动加入。)
string[] strCookies = (string[])response.Headers.GetValues("Set-Cookie");
// 查看最新的Cookie内容
cookie = handler.CookieContainer.GetCookies(_uri); //await异步读取最后的数据(此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
textBox1.Text = await response.Content.ReadAsStringAsync();
}
}
因为Set-Cookie中有可能出现expires,这个Cookie属性中会包含周几的数据,后面跟了一个逗号。因为有这个逗号。HttpClientHandler无法自动将这一条Cookie的数据添加进去。这个就要自己处理了。
还有这个Cookie都可以在Headers里获取到。但是设置的话无效。开始的时候是在HttpRequestMessage的Header中设置了。Cookie,可是抓包发现并没有将设置的Cookie提交到服务器。
以上内容均以www.baidu.com作为目标网站测试。
.NET 4.5 HttpClient 中使用Cookie的更多相关文章
- httpClient 中的post或者get请求
httpClient相对于java自带的请求功能更加强大,下面就以例子的形式给出: //HttpClient Get请求 private static void register() { try { ...
- Apache HttpComponents中的cookie匹配策略
Apache HttpComponents中的cookie匹配策略 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre. ...
- httpclient 中post请求重定向
背景:使用httpclient 的post请求进行登录,需要重定向登录,请求重定向后的地址 在httpclient中post请求不像get请求自己可以重定向,实现方式是 判断post请求返回码是否是3 ...
- Javascript中关于cookie的那些事儿
Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...
- 在iframe中使用cookie需要注意
cookie的使用早已不新鲜了,但是最近在做项目时还是被坑了一把. 那么接下来让我们来看一下这个"坑"是个什么情况! 前提: 1.现在有两个页面A.html, B.html,同时, ...
- php中的cookie用法
cookie和session都可以暂时保存在多个页面中使用的变量,但是它们有本质的差别. cookie存放在客户端浏览器中,session保存在服务器上.它们之间的联系是session ID一般保存在 ...
- 【原创】js中利用cookie实现记住密码功能
在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...
- varnish中忽略cookie进行缓存
varnish不缓存cookie的页面,如果html页面中带有cookie以下代码为接收到结尾的文件,自动去除掉cookiesub vcl_recv { if (req.request == ” ...
- Servlet中的cookie和session
保存数据的2中方式 Cookie Session Cookie 我们可以将一些信息保存到cookie中,cookie存放在对应的浏览器目录里面.每个站点可以保存20个cookie,最大长度不超过4k. ...
随机推荐
- 如何在命令提示符下编译运行含有Package的java文件
这篇是大二自学Java的时候记下的笔记,中午回顾印象笔记的时候意外看到了这篇.看到多年前写下的文字,我想起那时候我对Java的懵懵懂懂,每天晚上在图书馆照着书写书上的示例代码,为一个中文分号绞尽脑汁, ...
- 如何解决Nginx php 50x 错误
SEO反馈百度爬虫经常504,一般情况下是由nginx默认的fastcgi进程响应慢引起的,但也有其他情况,这里我总结了一些解决办法供大家参考. 方法/步骤 一般50x状态码问题分析: Nginx ...
- 农历03__ZC
代码,改自 农历01(http://www.cnblogs.com/cppskill/p/5930558.html) 1.main.cpp #include "Lunar_ZC.h" ...
- Java回顾之集合
在这篇文章里,我们关注Java中的集合(Collection).集合是编程语言中基础的一部分,Java自JDK早期,就引入了Java Collection Framework.设计JCF的那个人,后来 ...
- tp5集成淘宝,微信,网易,新浪等第三方登录
tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ...
- FZU 2169 shadow spfa
题目链接:shadow 好佩服自己耶~~~好厉害~~~ 麻麻再也不用担心我的spfa 和 邻接表技能了~~~ spfa 记录最短路径. #include <stdio.h> #includ ...
- bzoj2120
题解: 可修改莫队 我们加入一个时间T 然后在排序的时候考虑一下时间 在计算的时候也要考虑 代码: #include<bits/stdc++.h> using namespace std; ...
- 【转】 linux的网络接口之扫盲
[转] linux的网络接口之扫盲 转自:http://blog.csdn.net/zhangxinrun/article/details/6820433 (1)网络接口的命名 这里并不存在一定的命名 ...
- linux提权辅助工具(一):linux-exploit-suggester.sh
来自:https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh ...
- 用于调试的printf函数和自定义log函数
1. 用宏定义调试用的DPRINT #define DEBUG_ENABLE #ifdef DEBUG_ENABLE #define DPRINT(fmt, args...) fprintf(stde ...