2012-04-24 49 views
72

Tôi hiện đang sử dụng HttpWebRequest để nhận một trang web. Tôi muốn sử dụng mẫu chờ đợi, không được cung cấp cho HttpWebRequests. Tôi tìm thấy lớp học HttpClient, có vẻ là lớp công nhân Http mới. Tôi đang sử dụng HttpClient.GetAsync(...) để truy vấn trang web của mình. Nhưng tôi thiếu tùy chọn để thêm ClientCredentials như HttpWebRequest.Credentials. Có cách nào để cung cấp thông tin xác thực HttpClient không?HttpClient.GetAsync với thông tin đăng nhập mạng

Trả lời

125

Bạn có thể vượt qua một thể hiện của các HttpClientHandler Class với các thông tin đến HttpClient Constructor:

using (var handler = new HttpClientHandler { Credentials = ... }) 
using (var client = new HttpClient(handler)) 
{ 
    var result = await client.GetAsync(...); 
} 
+13

Bạn cũng có thể thiết lập 'UseDefaultCredentials = true' cho 'HttpClientHandler' – DarkWalker

+7

Điều này có thể gây ra hành vi tối ưu khi * Basic * xác thực là yêu cầu http://stackoverflow.com/q/25761214/57428 – sharptooth

+1

Tôi đã tìm thấy bạn sẽ muốn đặt handler.ClientCertificateOptions = ClientCertificateOption.Automatic để thực sự có tín dụng được gửi. –

Các vấn đề liên quan