2012-04-24 113 views
72

我目前使用HttpWebRequest来获取网站。我想用await模式,HttpWebRequests没有给出。我发现类HttpClient,这似乎是新的Http工人类。我正在使用HttpClient.GetAsync(...)来查询我的网页。但我错过了添加ClientCredentials的选项,如HttpWebRequest.Credentials。有没有办法给HttpClient认证信息?HttpClient.GetAsync具有网络凭据

回答

125

您可以通过HttpClientHandler Class与该凭证的实例给HttpClient Constructor

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

您还可以设置'UseDefaultCredentials = TRUE'为'HttpClientHandler' – DarkWalker 2014-01-26 14:13:46

+7

这可能会导致次优的行为,当*基本*认证需要http://stackoverflow.com/q/25761214/57428 – sharptooth 2014-09-10 09:38:16

+1

我发现你会想设置handler.ClientCertificateOptions = ClientCertificateOption.Automatic为了实际上有发送credititals。 – 2016-02-29 00:10:27