HttpClient.GetAsync avec les informations d'identification réseau


93

J'utilise actuellement HttpWebRequestpour obtenir un site Web. Je voudrais utiliser le modèle d'attente, qui n'est pas donné pour HttpWebRequests. J'ai trouvé la classe HttpClient, qui semble être la nouvelle classe de travail Http. J'utilise HttpClient.GetAsync(...)pour interroger ma page Web. Mais je manque l'option d'ajouter ClientCredentialscomme HttpWebRequest.Credentials. Existe-t-il un moyen de donner les HttpClientinformations d'authentification?

Réponses:


165

Vous pouvez transmettre une instance de la classe HttpClientHandler avec les informations d'identification au constructeur HttpClient :

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

20
Vous pouvez également définir UseDefaultCredentials = truepourHttpClientHandler
DarkWalker

9
Cela peut entraîner un comportement sous-optimal lorsque l' authentification de base est requise stackoverflow.com/q/25761214/57428
sharptooth

2
J'ai trouvé que vous voudrez définir handler.ClientCertificateOptions = ClientCertificateOption.Automatic afin de faire envoyer les crédits.
Garr Godfrey le

4
Il est conseillé d'utiliser une instance statique de HttpClient, en particulier dans les scénarios de serveur
James Westgate

3
Alors, que devons-nous faire dans les scénarios de serveur? Nous nous heurtons aux problèmes que vous rencontrez lorsque vous n'avez pas d'instance statique mais que nous devons transmettre les informations d'identification.
Scott Chamberlain
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.