1. 程式人生 > 其它 >C# HttpClient用法

C# HttpClient用法

因為HttpClilent中預設的Cookie是登入完成後自帶的,如果需要設定Cookie要先把預設的cookie設定為false:

using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))
using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))
            {
                client.DefaultRequestHeaders.Add(
"Cookie", @"xxxxxx"); }
View Code

Get請求

//Get請求新增Header
        public static string GetWithHeader(string url)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Authorization", @"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJndWlkIjoibXItMjAyMS0xMC0yNS1nSlJfWXNNQmJuLTJYeTYwYjA5WUVfMGpWN3RUT1h4MmY1Y3JFQ3pPNmdpT1V1czFaQktNLUhEV1NUOEd1ZlZtTHZVY01yay1JSSIsImlhdCI6MTYzNTE0Mjg5NCwiaXNzIjoiZGF0YS5taWRsYW5kLmNvbS5oayJ9.OpYHdETIud_WWzSl1eIhLL18oUZLX9ZNYqqtCQlmV7KqH7Djckp_6StjtjR3NrRrWUuRYAHyUv_idq3IajN9TyK2YvJd1pDkfT_U-do7pchb3muSx6x1LkWhpJSO4F-x2_0AounUcGTuaSpy1DrkoHVClqmeVyo4CVOP9DOcYtBVl-di0v2N6FGtiwFdjhunO4J0530sMCTIPcQHV9MF5AjqqrCLadCsf641NkZUCiAcicuCmi2c5R6rdsMaVPOoL1dXbtFpmeLd2Os6wioHgmK_c5cB90uqh4Sk7vJKm_eKi2ErXhHshGi56pZcnJNjfe4_T04ojD7Gbaf2oDm08BOjEXr7uVH5HcJ-WE4FLpZKmQolmtFQj276mhkSeEorx15WjIhjaaiFmeUsbXcbEt9V8FdMX2ZGWPpkK3BE70mg78_pB7-VSe6-gLflPooEliKz8fMx6T362e5KhZzJNhf7FJtzROMtzWelXMbnycYg_fXeVc0mxf-W7XLexYw6xDaFQEnj1mSoEtLW1S1b41ztp49IKua5oWuEzI0EqOXFXl1h5EEiNhcMYQB7oV5tQd5h74ppZGBpw4jL9J8EyelnX-MwqXR6SEwBj3f8JQkAB4tbYTNA0Lzg35sGSUpUU9ofLzMtafEMSmOLGJy7cOsatR258cRlGSAg-nvjfCE
"); HttpResponseMessage res = httpClient.GetAsync(url).Result; return res.Content.ReadAsStringAsync().Result; } }
View Code

Post  =>application/json

//post 請求 Json字串FromBody  //application/json
        public static string PostWithJsonFromBody(string
url,string jsonStr) { using (HttpClient client = new HttpClient()) { //新增頭部 //client.DefaultRequestHeaders.Add("",""); HttpContent httpContent = new StringContent(jsonStr); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result; return responseMessage.Content.ReadAsStringAsync().Result; } }
View Code

Post  =>application/x-www-form-urlencoded

 // application/x-www-form-urlencoded
        public static string PostWithFromUrlEncodedContent(string url, string Str)
        {
            using (HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }))
            {
                client.DefaultRequestHeaders.Add("Cookie", @"GA1.1.2114479464.1637811521; _ga_N1VDTN21FS=GS1.1.1637821074.2.1.1637821075.0; _fbp=fb.2.1637821075754.2122594005; XSRF-TOKEN=eyJpdiI6InpaZHFUNUNcL2hCNFJrU2l1MER5dUdBPT0iLCJ2YWx1ZSI6InpOWVpVMkZWM01uRHNQcXUxN25uQjdDaENYNnEyTlgwVTkwQU45UUtcL0VvYXdoWmJuUFl2MUZLRWRjVnFiUVwvbCIsIm1hYyI6ImJmZmY0YzZkNmJhMzhkMTJiOWUzNDFhYjNiZTUyNWQ0MjU5MDJlNDI0MTQ4ODQ1YmNjNGI3MDc4NTEzMTdmZGYifQ%3D%3D; professional_properties_co_session=eyJpdiI6Im5yRGVmOVEwS1E2WCtpMU56bk1Fc3c9PSIsInZhbHVlIjoiR1BnU0d6OFJJVFlSTGp3RlhXaThGWTVFaGtYNDZ4aGgrSFNRSHBhQkdvQ3F5NGdsMGRQMkJBV1hCOUhGeWVociIsIm1hYyI6IjYxZDAxMWY1OWJkOWY1NTM4ZDU5ZjJhMDQ5OWU0YjFkZmI2MzE4Y2YxOTNmYjY5OWJlZTdlNzA5N2FkMWYyM2UifQ%3D%3D");
                HttpContent httpContent = new FormUrlEncodedContent(Helper.FormDataToDictionary(Str));
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
                httpContent.Headers.ContentType.CharSet = "utf-8";
                HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result;
                return responseMessage.Content.ReadAsStringAsync().Result;
            }
        }
View Code

viewparse轉成Dictionary:

public static Dictionary<string, string> FormDataToDictionary(string viewParse_Encode)
        {
            var viewParse = HttpUtility.UrlDecode(viewParse_Encode, Encoding.UTF8);
            Dictionary<string, string> dic = new Dictionary<string, string>();
            var arr = viewParse.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var a in arr)
            {
                var arr2 = a.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (arr2.Length == 1)
                {
                    string s = string.Empty;
                    dic.Add(arr2[0], s);
                }
                else
                    dic.Add(arr2[0], arr2[1]);
            }
            return dic;
        }
View Code

Send方法:

//Send請求,先配置請求引數,HttpRequestMessage
        public static string SendAsPost(string url,string content)
        {
            var handler = new HttpClientHandler() { UseCookies = false};
            using (HttpClient client = new HttpClient(handler))
            {
                HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post,url);
                requestMessage.Headers.Add("Cookie", @"_ga=GA1.1.2114479464.1637811521; _ga_N1VDTN21FS=GS1.1.1637821074.2.1.1637821075.0; _fbp=fb.2.1637821075754.2122594005; XSRF-TOKEN=eyJpdiI6InpaZHFUNUNcL2hCNFJrU2l1MER5dUdBPT0iLCJ2YWx1ZSI6InpOWVpVMkZWM01uRHNQcXUxN25uQjdDaENYNnEyTlgwVTkwQU45UUtcL0VvYXdoWmJuUFl2MUZLRWRjVnFiUVwvbCIsIm1hYyI6ImJmZmY0YzZkNmJhMzhkMTJiOWUzNDFhYjNiZTUyNWQ0MjU5MDJlNDI0MTQ4ODQ1YmNjNGI3MDc4NTEzMTdmZGYifQ%3D%3D; professional_properties_co_session=eyJpdiI6Im5yRGVmOVEwS1E2WCtpMU56bk1Fc3c9PSIsInZhbHVlIjoiR1BnU0d6OFJJVFlSTGp3RlhXaThGWTVFaGtYNDZ4aGgrSFNRSHBhQkdvQ3F5NGdsMGRQMkJBV1hCOUhGeWVociIsIm1hYyI6IjYxZDAxMWY1OWJkOWY1NTM4ZDU5ZjJhMDQ5OWU0YjFkZmI2MzE4Y2YxOTNmYjY5OWJlZTdlNzA5N2FkMWYyM2UifQ%3D%3D");
                requestMessage.Headers.Add("accept-language", "zh-CN,zh;q=0.9,en;q=0.8");
                requestMessage.Content = new FormUrlEncodedContent(Helper.FormDataToDictionary(content));
                HttpResponseMessage responseMessage =  client.SendAsync(requestMessage).Result;
                return responseMessage.Content.ReadAsStringAsync().Result;
            }
        }
View Code

HttpContent各種格式:

MultipartFormDataContent===================>multipart/form-data

FormUrlEncodedContent===================>application/x-www-form-urlencoded

StringContent===================>application/json (常用)

StreamContent===================>binary