HttpClient.GetAsync với thông tin đăng nhập mạng


93

Tôi hiện đang sử dụng HttpWebRequestđể có được một trang web. Tôi muốn sử dụng mẫu chờ đợi, mẫu không được cung cấp cho HttpWebRequests. Tôi đã tìm thấy lớp 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 lượt ClientCredentialsthích HttpWebRequest.Credentials. Có cách nào để cung cấp HttpClientthông tin xác thực?

Câu trả lời:


165

Bạn có thể chuyển một phiên bản của Lớp HttpClientHandler với thông tin đăng nhập vào Trình tạo HttpClient :

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

20
Bạn cũng có thể đặt UseDefaultCredentials = truechoHttpClientHandler
DarkWalker

9
Điều này có thể gây ra hành vi dưới mức tối ưu khi yêu cầu xác thực Cơ bản stackoverflow.com/q/25761214/57428
sharptooth

2
Tôi nhận thấy rằng bạn sẽ muốn thiết lập handler.ClientCertificateOptions = ClientCertificateOption.Automatic để thực sự gửi các số liệu xác thực.
Garr Godfrey

4
Nên nó sử dụng một trường hợp tĩnh của HttpClient, đặc biệt là trong các tình huống máy chủ
James Westgate

3
Vì vậy, chúng ta nên làm gì trong các tình huống máy chủ? Chúng tôi đang giải quyết các vấn đề mà bạn gặp phải khi bạn không có phiên bản tĩnh nhưng chúng tôi cần chuyển thông tin đăng nhập.
Scott Chamberlain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.