HttpClient.GetAsync mit Netzwerkanmeldeinformationen

93

Ich verwende derzeit HttpWebRequest, um eine Website zu erhalten. Ich möchte das Wartemuster verwenden, das nicht angegeben ist HttpWebRequests. Ich habe die Klasse gefunden HttpClient, die die neue HTTP-Arbeiterklasse zu sein scheint. Ich verwende HttpClient.GetAsync(...), um meine Webseite abzufragen. Aber ich vermisse die Option, ClientCredentialswie hinzuzufügen HttpWebRequest.Credentials. Gibt es eine Möglichkeit, die HttpClientAuthentifizierungsinformationen anzugeben?

Jan K.
quelle

Antworten:

165

Sie können eine Instanz der HttpClientHandler-Klasse mit den Anmeldeinformationen an den HttpClient-Konstruktor übergeben :

using (var handler = new HttpClientHandler { Credentials = ... })
using (var client = new HttpClient(handler))
{
    var result = await client.GetAsync(...);
}
dtb
quelle
20
Sie können auch UseDefaultCredentials = truefürHttpClientHandler
DarkWalker
9
Dies kann suboptimales Verhalten verursachen , wenn Basisauthentifizierung erforderlich stackoverflow.com/q/25761214/57428
Sharptooth
2
Ich habe festgestellt, dass Sie handler.ClientCertificateOptions = ClientCertificateOption.Automatic festlegen möchten, damit die Kreditpunkte tatsächlich gesendet werden.
Garr Godfrey
4
Es ist ratsam, eine statische Instanz von HttpClient zu verwenden, insbesondere in Serverszenarien
James Westgate
3
Was sollen wir also in Serverszenarien tun? Wir stoßen auf die Probleme, die auftreten, wenn Sie keine statische Instanz haben, aber Anmeldeinformationen übergeben müssen.
Scott Chamberlain