C# Httpclient编程

今天研究了一天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;}}顶

 

转载于:https://www.cnblogs.com/shiningrise/p/5931362.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部