具有网络凭据的HttpClient.GetAsync


93

我目前正在使用HttpWebRequest该网站。我想使用await模式,这不是for给出的HttpWebRequests。我找到了该类HttpClient,它似乎是新的Http worker类。我正在HttpClient.GetAsync(...)查询我的网页。但是我缺少添加ClientCredentialslike 的选项HttpWebRequest.Credentials。有什么办法可以提供HttpClient身份验证信息吗?

Answers:


165

您可以将带有凭据的HttpClientHandler类的实例传递给HttpClient构造函数

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

20
您还可以设置UseDefaultCredentials = trueHttpClientHandler
DarkWalker

9
当需要基本身份验证时,这可能会导致次优行为stackoverflow.com/q/25761214/57428
sharptooth 2014年

2
我发现您将要设置handler.ClientCertificateOptions = ClientCertificateOption.Automatic,以便实际发送信用凭证。
Garr Godfrey

4
建议使用HttpClient的静态实例,尤其是在服务器方案中
James Westgate

3
那么在服务器场景中我们应该怎么做?当您没有静态实例时,我们会遇到您遇到的问题,但是我们需要传递凭据。
Scott Chamberlain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.