为了使用.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作为目标网站测试。

最新文章

  1. ecshop商品子分类点击下拉,子分类空时,直接跳转功能
  2. 通过硬编码获取dubbo服务对象
  3. Redis学习-开始
  4. [转载]CRect::DeflateRect
  5. linux 的useradd 命令的p选项
  6. leetcode 146. LRU Cache ----- java
  7. 尽量使用条件属性(Conditional Attribute)而不是#if/#endif预处理
  8. XCode 7.1 安装 Alcatraz包管理器失败的处理
  9. Sliverlight Slide 的左右滑动
  10. HDU 2795 (线段树 单点更新) Billboard
  11. JAVA 反射特性
  12. ASP.NET过滤器、URL重写
  13. django下载文件
  14. Spring学习(一):理解IoC容器
  15. C# — 创建Windows服务进阶版
  16. 使用autoconf与automake自动生成MakeFile文件
  17. mysql 通过查看mysql 配置参数、状态来优化你的mysql
  18. 停止一个java的线程执行
  19. 【工具向01】——markdown 文本编辑语言相关
  20. Java的工厂模式(一)

热门文章

  1. Linux内核分析 03
  2. 20155201 实验二《Java面向对象程序设计》实验报告
  3. InstallShieldPro 2015中Basic MSI工程类型如何调用InstallScript脚本
  4. 【图片下载-代码】java下载网络图片资源例子
  5. JS+Canvas的棋盘游戏和Java的动态结合
  6. UVa 11582 巨大的斐波那契数!(幂取模)
  7. vue 脚手架 (三,配置文件config, build目录)
  8. 2-15-MySQL进阶
  9. UVA-10305 Ordering Tasks (拓扑排序)
  10. iOS-程序启动原理和UIApplication