Tengo un HttpClient que estoy usando para una API REST. Sin embargo, tengo problemas para configurar el encabezado de autorización. Necesito establecer el encabezado en el token que recibí al hacer mi solicitud de OAuth. Vi un código para .NET que sugiere lo siguiente,
httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);
Sin embargo, la clase Credential no existe en WinRT. ¿Alguien tiene alguna idea de cómo configurar el encabezado de autorización?
c#
rest
oauth
windows-runtime
Stephen Hynes
fuente
fuente
Respuestas:
Entonces la forma de hacerlo es la siguiente,
fuente
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "encrypted user/pwd");
Tomar un usuario cifrado / pwd de la extensión de Chrome Advanced Rest Client.fuente
Busco una buena manera de abordar este problema y estoy viendo la misma pregunta. Con suerte, esta respuesta ayudará a todos los que tienen el mismo problema que les gusto.
referencia de https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi
fuente
using
bloque. (Sí, sé que suena al revés, pero perderá las conexiones si usa enusing
lugar de simplemente reciclar el HttpClient.)Como es una buena práctica reutilizar la instancia de HttpClient , para problemas de rendimiento y agotamiento de puertos , y debido a que ninguna de las respuestas da esta solución (e incluso lo lleva a malas prácticas :(), pongo aquí un enlace hacia la respuesta que hice en una pregunta similar:
https://stackoverflow.com/a/40707446/717372
Algunas fuentes sobre cómo usar HttpClient de la manera correcta:
fuente
Estoy de acuerdo con la respuesta de TheWhiteRabbit, pero si tiene muchas llamadas usando HttpClient, el código parece un poco repetitivo en mi opinión.
Creo que hay 2 formas de mejorar un poco la respuesta.
Cree una clase auxiliar para crear el cliente:
Uso:
Crea un método de extensión:
No gana un premio de belleza pero funciona muy bien :)
Uso:
Nuevamente, creo que las 2 opciones anteriores hacen que el cliente que usa la declaración sea un poco menos repetitivo. Tenga en cuenta que es una buena práctica reutilizar el HttpClient si está haciendo varias llamadas http, pero creo que está un poco fuera de alcance para esta pregunta.
fuente
Estaba configurando la ficha de portador
Funcionaba en un punto final, pero no en otro. El problema era que tenía minúsculas
b
en"bearer"
. Después del cambio ahora funciona para las dos API que estoy golpeando. Es algo tan fácil de perder si ni siquiera lo está considerando como uno de los pajaros para buscar la aguja.Asegúrese de tener
"Bearer"
- con capital.fuente
Te sugiero:
Y luego puedes usarlo así:
fuente
Para configurar la autenticación básica con C # HttpClient. El siguiente código me funciona.
fuente
Así es como lo he hecho:
Este video de you-tube me ayudó mucho. Por favor, míralo. https://www.youtube.com/watch?v=qCwnU06NV5Q
fuente
Utilice la autorización básica y los parámetros de Json.
fuente
Si desea reutilizar el
HttpClient
, se recomienda no utilizar elDefaultRequestHeaders
como se utilizan para enviar con cada solicitud.Podrías probar esto:
fuente
6 años después, pero agregando esto en caso de que ayude a alguien.
https://www.codeproject.com/Tips/996401/Authenticate-WebAPIs-with-Basic-and-Windows-Authen
fuente
Opción UTF8
fuente
Usando
AuthenticationHeaderValue
clase deSystem.Net.Http
ensamblajepodemos configurar o actualizar el
Authorization
encabezado existente para nuestro mehttpclient
gusta así:fuente
BaseWebApi.cs
SubWebApi.cs
fuente
En el caso de que desee enviar una
HttpClient
solicitud con Token de portador, este código puede ser una buena solución:fuente
En net .core puedes usar
o
fuente
SetBasicAuthentication()
que no está disponible por defecto, por lo que debe ser un método de extensión. ¿Dónde se define?Puede ser más fácil usar una biblioteca existente.
Por ejemplo, los siguientes métodos de extensión se agregan con Identity Server 4 https://www.nuget.org/packages/IdentityModel/
fuente
Oauth El flujo del proceso es complejo y siempre hay espacio para un error u otro. Mi sugerencia será utilizar siempre el código repetitivo y un conjunto de bibliotecas para el flujo de autenticación OAuth. Le facilitará la vida.
Aquí está el enlace para el conjunto de bibliotecas. Bibliotecas OAuth para .Net
fuente
esto podría funcionar, si está recibiendo un json o un xml del servicio y creo que esto puede darle una idea sobre cómo funcionan los encabezados y el tipo T también, si usa la función MakeXmlRequest (poner los resultados en xmldocumnet) y MakeJsonRequest (ponga el json en la clase que desee que tenga la misma estructura que la respuesta json) de la siguiente manera
fuente
fuente
Esto puede ayudar a configurar el encabezado:
fuente
HttpClient
, noWebClient
.