Estoy implementando una API hecha por otros colegas con Apiary.io, en un proyecto de aplicación de la Tienda Windows.
Muestran este ejemplo de un método que tengo que implementar:
var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/");
using (var httpClient = new HttpClient{ BaseAddress = baseAddress })
{
using (var response = await httpClient.GetAsync("user/list{?organizationId}"))
{
string responseData = await response.Content.ReadAsStringAsync();
}
}
En este y en algunos otros métodos, necesito tener un encabezado con un token que obtengo antes.
Aquí hay una imagen de Postman (extensión de Chrome) con el encabezado del que estoy hablando:
¿Cómo agrego ese encabezado de autorización a la solicitud?
Respuestas:
Cuando use GetAsync con el HttpClient, puede agregar los encabezados de autorización de la siguiente manera:
Esto agrega el encabezado de autorización para la vida útil del HttpClient, por lo que es útil si accede a un sitio donde el encabezado de autorización no cambia.
Aquí hay una respuesta SO detallada
fuente
Una respuesta posterior, pero porque nadie dio esta solución ...
Si no desea establecer el encabezado en la
HttpClient
instancia agregándolo alDefaultRequestHeaders
, puede establecer encabezados por solicitud .Pero estará obligado a utilizar el
SendAsync()
método.Esta es la solución correcta si desea reutilizar
HttpClient
, lo cual es una buena práctica paraÚselo así:
fuente
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token);
"Portador" sería un encabezado HTTP no válidousing
, pero podría crear una instancia en el constructor y botar en elDispose()
using
en HttpClient (esto es malo), dije en HttpRequesMessage (porque tiene buffers de memoria no administrados para la transmisión que DEBEN eliminarse después del uso). La solicitud y la respuesta son y deben desecharse en cada solicitud (de lo contrario, mantendrá bloqueados grandes bloques de memoria durante mucho tiempo). ElHttpClient
es reutilizable, hasta cierto punto.La respuesta aceptada funciona, pero puede complicarse cuando quería intentar agregar encabezados Aceptar. Esto es con lo que terminé. Me parece más simple, así que creo que me quedaré con eso en el futuro:
fuente
Puede agregar cualquier encabezado que necesite al
HttpClient
.Aquí hay un buen tutorial al respecto.
Esto no solo hace referencia a solicitudes POST, también puede usarlo para solicitudes GET.
fuente
Siguiendo la respuesta de greenhoorn, puede usar "Extensiones" de esta manera:
Y use:
fuente
A veces, solo necesitas este código.
fuente