博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Httpclient编程
阅读量:5878 次
发布时间:2019-06-19

本文共 2204 字,大约阅读时间需要 7 分钟。

今天研究了一天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", "123");            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>0)                    {                        strCookie = strCookies[0].Substring(0, strCookies[0].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;                }            }顶

 

转载地址:http://ngdix.baihongyu.com/

你可能感兴趣的文章
C/C++ 多线程机制
查看>>
js - object.assign 以及浅、深拷贝
查看>>
python mysql Connect Pool mysql连接池 (201
查看>>
Boost在vs2010下的配置
查看>>
一起谈.NET技术,ASP.NET伪静态的实现及伪静态的意义
查看>>
20款绝佳的HTML5应用程序示例
查看>>
string::c_str()、string::c_data()及string与char *的正确转换
查看>>
11G数据的hive初测试
查看>>
如何使用Core Text计算一段文本绘制在屏幕上之后的高度
查看>>
==和equals区别
查看>>
2010技术应用计划
查看>>
XML 节点类型
查看>>
驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
查看>>
Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现...
查看>>
Template Method Design Pattern in Java
查看>>
MVC输出字符串常用四个方式
查看>>
LeetCode – LRU Cache (Java)
查看>>
JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)...
查看>>
【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>