.NET 4.5 HttpClient 中使用Cookie

來源:互聯網
上載者:User

標籤:style   c   class   blog   code   java   

為了使用.NET 4.5的HttpClient從WIN2K3換成了WIN7。裝VS2010,結果告訴我VS2010不支援.NET 4.5。又裝VS2012,接著裝.NET FRAMEWORK 4.5.2。結果第一次開啟VS2012建立項目。提示我錯誤。

無奈求助度娘,順利解決。打個補丁搞定。於是開始摸索HttpClient如何使用。網上的介紹還真是少的可憐。。居然沒找到一個使用COOKIE的列子。最後研究了半天終於找到地方了。

async void Navigate(string uri){    Uri _uri = new Uri(uri);var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip};// expires=Thu, 這句有誤,不能出現逗號。去掉逗號也報錯。所以要吧expires整句去掉,一直到分號。    //handler.CookieContainer.SetCookies(new Uri(uri), "BAIDUID=88F2FC4567899A8D5421A5398085F91:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com");                //建立HttpClient(注意傳入HttpClientHandler)using (var http = new HttpClient(handler))    {//await非同步等待回應        CookieCollection cookie;        var response = await http.GetAsync(_uri);        // 擷取伺服器返回的Cookie(部分COOKIE無法記錄到HttpClientHandler的CookContainer中,可以手動加入。)        string[] strCookies = (string[])response.Headers.GetValues("Set-Cookie");        // 查看最新的Cookie內容        cookie = handler.CookieContainer.GetCookies(_uri);                        //await非同步讀取最後的資料(此時gzip已經被自動解壓縮了,因為上面的AutomaticDecompression = DecompressionMethods.GZip)        textBox1.Text = await response.Content.ReadAsStringAsync();    }
}

 因為Set-Cookie中有可能出現expires,這個Cookie屬性中會包含周幾的資料,後面跟了一個逗號。因為有這個逗號。HttpClientHandler無法自動將這一條Cookie的資料添加進去。這個就要自己處理了。

還有這個Cookie都可以在Headers裡擷取到。但是設定的話無效。開始的時候是在HttpRequestMessage的Header中設定了。Cookie,可是抓包發現並沒有將設定的Cookie提交到伺服器。

以上內容均以www.baidu.com作為目標網站測試。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.