HttpClient.GetAsync con credenziali di rete


93

Attualmente sto usando HttpWebRequestper ottenere un sito web. Vorrei usare il modello di attesa, che non è previsto HttpWebRequests. Ho trovato la classe HttpClient, che sembra essere la nuova classe worker Http. Sto usando HttpClient.GetAsync(...)per interrogare la mia pagina web. Ma mi manca l'opzione per aggiungere mi ClientCredentialspiace HttpWebRequest.Credentials. C'è un modo per fornire le HttpClientinformazioni di autenticazione?

Risposte:


165

Puoi passare un'istanza della classe HttpClientHandler con le credenziali al costruttore HttpClient :

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

20
È inoltre possibile impostare UseDefaultCredentials = trueperHttpClientHandler
Darkwalker

9
Ciò può causare un comportamento non ottimale quando di base è necessaria l'autenticazione stackoverflow.com/q/25761214/57428
sharptooth

2
ho scoperto che vorrai impostare handler.ClientCertificateOptions = ClientCertificateOption.Automatic per avere effettivamente i creditital inviati.
Garr Godfrey,

4
È consigliabile utilizzare un'istanza statica di HttpClient, specialmente in scenari server
James Westgate,

3
Quindi cosa dovremmo fare negli scenari server? Stiamo riscontrando problemi che si verificano quando non si dispone di un'istanza statica ma è necessario passare le credenziali.
Scott Chamberlain
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.