HttpClient.GetAsync与网络凭据

时间:2012-04-24 06:23:57

标签: c# async-await .net-4.5

我目前正在使用HttpWebRequest来获取网站。我想使用await模式,这不是HttpWebRequests给出的。我找到了类HttpClient,它似乎是新的Http工作者类。我正在使用HttpClient.GetAsync(...)来查询我的网页。但是我错过了添加ClientCredentials HttpWebRequest.Credentials的选项。有没有办法提供HttpClient身份验证信息?

2 个答案:

答案 0 :(得分:155)

您可以将带有凭据的HttpClientHandler Class个实例传递给HttpClient Constructor

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

答案 1 :(得分:0)

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

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

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

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