HttpClient.GetAsync com credenciais de rede

93

No momento, estou usando HttpWebRequestpara obter um site. Eu gostaria de usar o padrão de espera, que não é fornecido para HttpWebRequests. Eu encontrei a classe HttpClient, que parece ser a nova classe de trabalho Http. Estou usando HttpClient.GetAsync(...)para consultar minha página da web. Mas estou perdendo a opção de adicionar ClientCredentialslike HttpWebRequest.Credentials. Existe alguma maneira de fornecer as HttpClientinformações de autenticação?

Jan K.
fonte

Respostas:

165

Você pode passar uma instância da classe HttpClientHandler com as credenciais para o construtor HttpClient :

using (var handler = new HttpClientHandler { Credentials = ... })
using (var client = new HttpClient(handler))
{
    var result = await client.GetAsync(...);
}
dtb
fonte
20
Você também pode definir UseDefaultCredentials = trueparaHttpClientHandler
DarkWalker
9
Isso pode causar um comportamento abaixo do ideal quando a autenticação básica é necessária stackoverflow.com/q/25761214/57428
sharptooth
2
Descobri que você deseja definir handler.ClientCertificateOptions = ClientCertificateOption.Automatic para que os créditos sejam enviados.
Garr Godfrey
4
É aconselhável usar uma instância estática de HttpClient, especialmente em cenários de servidor
James Westgate
3
Então, o que devemos fazer em cenários de servidor? Estamos enfrentando os problemas que você tem quando não tem uma instância estática, mas precisamos passar as credenciais.
Scott Chamberlain