102

我目前正在使用HttpWebRequest获取网站。我想使用 await 模式,它没有为HttpWebRequests. 我找到了 class HttpClient,这似乎是新的 Http worker 类。我HttpClient.GetAsync(...)用来查询我的网页。但我错过了添加ClientCredentialslike的选项HttpWebRequest.Credentials。有没有办法提供HttpClient认证信息?

4

2 回答 2

176

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

using (var handler = new HttpClientHandler { Credentials = ... })
using (var client = new HttpClient(handler))
{
    var result = await client.GetAsync(...);
}
于 2012-04-24T06:26:34.927 回答
5

您不应该每次都处理 HttpClient ,而是使用它(或一小部分客户端)更长的时间(应用程序的生命周期。您也不需要它的处理程序,但是您可以更改默认标头.

创建客户端后,您可以设置其默认请求标头进行身份验证。这是基本身份验证的示例:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "username:password".ToBase64());

ToBase64() 表示将字符串转换为 base64 编码的辅助函数。

于 2021-04-17T19:23:27.330 回答