惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 鬼蝶[DFCG]

Mono.Cecil 修改目标.NET的IL代码保存时报异常的处理。 博文阅读密码验证 - 博客园 [转载]斐讯K2 A2版免TTL刷BREED不死Bootloader 博文阅读密码验证 - 博客园 各种UserAgent的列表 自制Console线(已测试CISCO3560可用) [转载]在Vmware ESXI中安装群晖Synology DSM 5.0 (4528) .NET 相关工具 GridView 绑定数据的常用指定格式。 C# 实现快速闪电关机、快速重启 HttpWebRequest常用问题! WebBrowser处理AJAX生成的网页内容! HttpWebRequest请求超时的解决方案! 用正则表达式过滤HTML隐藏SPAN AMF入门教程 正则表达式30分钟入门 [转载]Reflector反编译.NET文件后修复 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。 windows 2008r2解决此错误提示。 TT双拨脚本
.NET 4.5 HttpClient 中使用Cookie
鬼蝶[DFCG] · 2014-05-27 · via 博客园 - 鬼蝶[DFCG]

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