C# Httpclient編程

來源:互聯網
上載者:User

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




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.