HttpClient.GetAsync con credenciales de red

93

Actualmente estoy usando HttpWebRequestpara obtener un sitio web. Me gustaría utilizar el patrón esperan, que no se da para HttpWebRequests. Encontré la clase HttpClient, que parece ser la nueva clase trabajadora Http. Estoy usando HttpClient.GetAsync(...)para consultar mi página web. Pero me falta la opción de agregar me ClientCredentialsgusta HttpWebRequest.Credentials. ¿Hay alguna forma de dar la HttpClientinformación de autenticación?

Jan K.
fuente

Respuestas:

165

Puede pasar una instancia de la clase HttpClientHandler con las credenciales al constructor HttpClient :

using (var handler = new HttpClientHandler { Credentials = ... })
using (var client = new HttpClient(handler))
{
    var result = await client.GetAsync(...);
}
dtb
fuente
20
También puede configurar UseDefaultCredentials = trueparaHttpClientHandler
DarkWalker
9
Esto puede causar un comportamiento subóptimo cuando se requiere autenticación básica stackoverflow.com/q/25761214/57428
sharptooth
2
He descubierto que querrá configurar handler.ClientCertificateOptions = ClientCertificateOption.Automatic para que se envíen los créditos.
Garr Godfrey
4
Es recomendable utilizar una instancia estática de HttpClient, especialmente en escenarios de servidor
James Westgate
3
Entonces, ¿qué debemos hacer en escenarios de servidor? Nos enfrentamos a los problemas que tiene cuando no tiene una instancia estática, pero debemos pasar las credenciales.
Scott Chamberlain