2012-04-24 6 views
72

Attualmente sto utilizzando HttpWebRequest per ottenere un sito Web. Mi piacerebbe usare il pattern di attesa, che non è dato per HttpWebRequests. Ho trovato la classe HttpClient, che sembra essere la nuova classe di lavoratori Http. Sto usando HttpClient.GetAsync(...) per interrogare la mia pagina web. Ma mi manca l'opzione per aggiungere ClientCredentials come HttpWebRequest.Credentials. C'è un modo per fornire le informazioni di autenticazione HttpClient?HttpClient.GetAsync con credenziali di rete

risposta

125

È possibile passare un'istanza della HttpClientHandler Class con le credenziali al HttpClient Constructor:

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

È anche possibile impostare 'useDefaultCredentials = true' per' HttpClientHandler' – DarkWalker

+7

Ciò può causare un comportamento non ottimale quando l'autenticazione * * di base è richiesto http://stackoverflow.com/q/25761214/57428 – sharptooth

+1

ho trovato che vorrete impostare handler.ClientCertificateOptions = ClientCertificateOption.Automatic per avere effettivamente i crediti inviati. –