C#之HttpClient設置cookies的兩種方式
前言
最近公司使用HttpClient對象在發(fā)送請求,拋棄了之前的HttpWebRequest,使用httpClient有個好處:就是可以只使用一個HttpClient的實例,去完成發(fā)送所有的請求數(shù)據(jù)(地址,請求數(shù)據(jù),類型,Cookie等)。
而傳統(tǒng)的HttpWebRequest每次請求需要創(chuàng)建一個單獨的實例,且規(guī)避了一個老問題:Socket 連接釋放不及時的問題。
下面的是轉(zhuǎn)發(fā)其他道友的文章,主要是在使用的過程中,自身需要發(fā)送一個自定義的Cookie到目標服務器,但是死活發(fā)送不過去,最后百度其他道友的文章發(fā)現(xiàn)如果需要發(fā)送自己的Cookie,需要做一個設置:
var handler = new HttpClientHandler() { UseCookies = false}; var client = new HttpClient(handler);// { BaseAddress = baseAddress };
一般有兩種辦法
第一種
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,則又會跳轉(zhuǎn)到登陸頁面。
第二種
設置 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();
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#如何讀寫應用程序配置文件App.exe.config,并在界面上顯示
這篇文章主要介紹了C#如何讀寫應用程序配置文件App.exe.config,并在界面上顯示問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06C# wpf使用ListBox實現(xiàn)尺子控件的示例代碼
本文主要介紹了C# wpf使用ListBox實現(xiàn)尺子控件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07winform 實現(xiàn)選擇文件和選擇文件夾對話框的簡單實例
下面小編就為大家?guī)硪黄獁inform 實現(xiàn)選擇文件和選擇文件夾對話框的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01