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?

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(...);
}

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.