• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# HttpClient设置cookies的两种办法 - 深入学习ing

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C# HttpClient设置cookies的两种办法

前言:最近公司使用HttpClient对象在发送请求,抛弃了之前的HttpWebRequest,使用httpClient有个好处:就是可以只使用一个HttpClient的实例,去完成发送所有的请求数据(地址,请求数据,类型,Cookie等)。   

而传统的HttpWebRequest每次请求需要创建一个单独的实例,且规避了一个老问题:Socket  连接释放不及时的问题。   

下面的是转发其他道友的文章,主要是在使用的过程中,自身需要发送一个自定义的Cookie到目标服务器,但是死活发送不过去,最后百度其他道友的文章发现如果需要发送自己的Cookie,需要做一个设置:

var handler = new HttpClientHandler() { UseCookies = false};
var client = new HttpClient(handler);// { BaseAddress = baseAddress };


道友文章地址:https://www.cnblogs.com/xiaozhu39505/p/8033108.html     原文如下:

 

一般有两种办法

第一种handler.UseCookies=true(默认为true),默认的会自己带上cookies,例如

var handler = new HttpClientHandler() { UseCookies = true };
var client = new HttpClient(handler);// { BaseAddress = baseAddress };
client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0");
client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
client.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");
var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("email", "xxxx"),
                new KeyValuePair<string, string>("password", "xxxx"),
            });
var result = await client.PostAsync("https://www.xxxx.com/cp/login", content);
result.EnsureSuccessStatusCode();

这种情况post请求登陆成功后,重定向到别的页面,也会自动带上cookies。如果把handler.UseCookies设置为false,登陆后重定向的话不会自动带上cookies,则又会跳转到登陆页面。

 

第二种设置 handler.UseCookies = false时,则需要手动给headers上加入cookies.

var handler = new HttpClientHandler() { UseCookies = false};
var client = new HttpClient(handler);// { BaseAddress = baseAddress };
var message = new HttpRequestMessage(HttpMethod.Get, url);
message.Headers.Add("Cookie", "session_id=7258abbd1544b6c530a9f406d3e600239bd788fb");
var result = await client.SendAsync(message);
result.EnsureSuccessStatusCode();

如果使用场景是:抓取需要登陆后才能看到的网页数据,建议使用第一种,不需要设置任何cookies,httpclient会自动把登陆后的cookies放置到后面的请求中。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#权限管理和设计浅谈发布时间:2022-07-10
下一篇:
C#(99):使用托管程序连接Oracle数据库(Oracle.ManagedDataAccess.dll) ...发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap