今天研究了一天C#如何添加cookie到httpcient里面,从而发请求时,能把cookie作为头部发出,最后发现根本加不进去。
Httpclient的cookie是来自上一个请求的响应,httpclient会自动把上一个请求的响应里面的cookie保存起来,所以当发送几个有关联的request,就必须要用同一个Httpclient
示例:
//第一个请求
HttpClient client = new HttpClient();
// 为JSON格式添加一个Accept报头
//client.DefaultRequestHeaders.Accept.Add(
// new MediaTypeWithQualityHeaderValue("application/json"));
string strDecodeBody = HttpUtility.UrlEncode(strBody);
HttpContent content = new StringContent(strDecodeBody);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0");
client.DefaultRequestHeaders.Add("Authentication", "");
HttpResponseMessage response = null;
response = client.PostAsync(strIP, content).Result;
if (response != null)
{
if (expectCode == HttpStatusCode.OK)
{
var resultValue = response.Content.ReadAsStringAsync().Result;
string strResponse = HttpUtility.UrlDecode(resultValue.ToString());
string[] strCookies = (string[])response.Headers.GetValues("Set-Cookie");
if(strCookies.Length>)
{
strCookie = strCookies[].Substring(, strCookies[].IndexOf(';'));
}
}
} //第二个请求,在这个请求里,没有设置cookie,由于跟第一个请求使用相同httpclient,所以cookie会自动放入请求头部发给服务器
string strEncodeBody = HttpUtility.UrlEncode(strBody);
HttpContent content = new StringContent(strEncodeBody);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage response = null;
response = client.PostAsync(strIP, content).Result;
if (response != null)
{
if (expectCode == HttpStatusCode.OK)
{
var resultValue = response.Content.ReadAsStringAsync().Result;
string strResponse = HttpUtility.UrlDecode(resultValue.ToString());
return strResponse;
}
} 顶

C# Httpclient编程的更多相关文章

  1. Angular22 HttpClient的使用

    1 HttpClient介绍 HttpClient时Http的演进,注意:Http在@angular/http中,而HttpClient在@angular/common/http中: 使用前需要在模块 ...

  2. 童鞋,[HttpClient发送文件] 的技术实践请查收

    1.荒腔走板 前几天有个童鞋在群里面问:怎么使用HttpClient发送文件? 之前我写了一个ABP上传文件,主要体现的是服务端,上传文件的动作是由前端小姐姐完成的, 我还真没有用HttpClient ...

  3. 如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查

    我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候,经常遇到需要跟踪Java 代码发送的HTTP请求明细的情况.和javascript代码在浏览器里发送请求可以 ...

  4. Java基础知识强化之网络编程笔记19:Android网络通信之 HttpClient和传统Post、Get方式的区别

    1. HttpClient是什么 ?     HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 ...

  5. Android利用网络编程HttpClient批量上传(一个)

    请尊重他人的劳动成果.转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP訪问网络资源>一文中介绍过HttpCient ...

  6. Android利用网络编程HttpClient批量上传(两)AsyncTask+HttpClient监测进展情况,并上传

    请尊重别人的劳动.转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 执行效果图: 我曾在<Andro ...

  7. 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

    请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...

  8. HttpClient学习之 客户端HTTP编程入门

    说明 本文存在的原因,是想深入的学习下HttpClient.对应的网址是: http://hc.apache.org/httpcomponents-client-4.5.x/primer.html h ...

  9. 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

    先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head& ...

随机推荐

  1. 您不能在64位可执行文件上设置DEP属性

    原因:32位的跟64位不匹配 解决方案: 更改文件目录为:C:\\Windows\SysWOW64dll\host.exe

  2. android sqlite select,update,delete语法

    String sql = "update recentsongtab set usetime=? , strdatetime=? where songid=?";//修改的SQL语 ...

  3. python数据库操作对主机批量管理

    import paramiko import MySQLdb conn = MySQLdb.connect(host=',db='host') cur = conn.cursor(cursorclas ...

  4. UrlRewritingNet伪静态的使用方法与解决方案(URL重写)

    在建站初期时,我们往往需要考虑的是使用真静态还是伪静态,这对于往后的站点配置,延展性都会产生深远的影响. 我使用伪静态的唯一目的:SEO优化.毋容置疑,伪静态在对于Spider是非常有利的,因此,我更 ...

  5. 【小白的CFD之旅】15 四种境界

    天气不错,小白一大早就起床了,吃过早餐就往奔实验室而去.路上碰到了同去实验室的小牛师兄. "小白,这么早啊",小牛师兄老远就发现了小白,打招呼道. "早啊,牛师兄,刚吃完 ...

  6. WPF系列 Path表示语法详解(Path之Data属性语法)

    示例: XAML(代码A): <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...

  7. ::before和::after伪元素的用法

    一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:link,:active,:target,:not(),:focus. 常见伪元素——::first-let ...

  8. 一个页面从输入URL到页面加载显示完成,这个过程都发生了什么?

    对于网址栏的URL不同的操作方式有不同的加载资源.获取数据的方式,下面的详细过程针对"在地址栏输入URL,按enter(回车)键加载资源"此种操作方式做解析,其它的方式的过程大同小 ...

  9. dotnet core 出现Can not find runtime target for framework '.NETCoreApp,Version=v1.6' 的解决办法

    如果你在更新dotnet core新的类库后运行程序提示如下的错误: Can not find runtime target for framework '.NETCoreAPP, Version=v ...

  10. YOLO: Real-Time Object Detection

    YOLO detection darknet框架使用 YOLO 训练自己的数据步骤,宁广涵详细步骤说明