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.