J'ai un HttpClient que j'utilise pour une API REST. Cependant, j'ai du mal à configurer l'en-tête d'autorisation. Je dois définir l'en-tête sur le jeton que j'ai reçu en faisant ma demande OAuth. J'ai vu du code pour .NET qui suggère ce qui suit,
httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);
Cependant, la classe Credential n'existe pas dans WinRT. Quelqu'un a-t-il des idées sur la façon de définir l'en-tête d'autorisation?
c#
rest
oauth
windows-runtime
Stephen Hynes
la source
la source
Réponses:
Donc, la façon de le faire est la suivante,
la source
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "encrypted user/pwd");
Prendre l'utilisateur / pwd crypté de l'extension chrome Advanced Rest Client.la source
Je cherche un bon moyen de régler ce problème et je regarde la même question. J'espère que cette réponse aidera tous ceux qui ont le même problème à m'aimer.
référence de https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi
la source
using
bloc. (Oui, je sais que cela sonne à l'envers, mais vous fuirez les connexions si vous utilisezusing
au lieu de simplement recycler le HttpClient.)Comme c'est une bonne pratique de réutiliser l'instance HttpClient , pour des problèmes de performances et d'épuisement de port , et parce qu'aucune des réponses ne donne cette solution (et même vous menant vers de mauvaises pratiques :(), je mets ici un lien vers la réponse que j'ai faite sur une question similaire:
https://stackoverflow.com/a/40707446/717372
Quelques sources sur la façon d'utiliser HttpClient de la bonne façon:
la source
Je suis d'accord avec la réponse de TheWhiteRabbit mais si vous avez beaucoup d'appels en utilisant HttpClient, le code semble un peu répétitif à mon avis.
Je pense qu'il y a 2 façons d'améliorer un peu la réponse.
Créez une classe d'assistance pour créer le client:
Usage:
Créez une méthode d'extension:
Ne gagne pas de prix de beauté mais fonctionne très bien :)
Usage:
Encore une fois, je pense que 2 options ci-dessus rendent le client utilisant l'instruction un peu moins répétitif. Gardez à l'esprit qu'il est préférable de réutiliser le HttpClient si vous effectuez plusieurs appels http, mais je pense que c'est un peu hors de portée pour cette question.
la source
Je mettais le jeton du porteur
Cela fonctionnait dans un point final, mais pas dans un autre. La question était que j'avais minuscule
b
sur"bearer"
. Après le changement, cela fonctionne pour les deux API que je frappe. Une chose si facile à manquer si vous ne la considérez même pas comme l'une des meules de foin pour chercher l'aiguille.Assurez-vous d'avoir
"Bearer"
- avec du capital.la source
Je vous propose:
Et puis vous pouvez l'utiliser comme ça:
la source
Pour définir l'authentification de base avec C # HttpClient. Le code suivant fonctionne pour moi.
la source
Voici comment je l'ai fait:
Cette vidéo sur YouTube m'aide beaucoup. Vérifie s'il te plaît. https://www.youtube.com/watch?v=qCwnU06NV5Q
la source
Utilisez l'autorisation de base et les paramètres Json.
la source
Si vous souhaitez réutiliser le
HttpClient
, il est conseillé de ne pas utiliser leDefaultRequestHeaders
comme ils sont utilisés pour envoyer avec chaque demande.Vous pouvez essayer ceci:
la source
6 ans plus tard, mais en ajoutant cela au cas où cela aiderait quelqu'un.
https://www.codeproject.com/Tips/996401/Authenticate-WebAPIs-with-Basic-and-Windows-Authen
la source
Option UTF8
la source
Utilisation de la
AuthenticationHeaderValue
classe d'System.Net.Http
assemblagenous pouvons définir ou mettre à jour l'en-
Authorization
tête existant pour notrehttpclient
comme ceci:la source
BaseWebApi.cs
SubWebApi.cs
la source
Dans le cas où vous souhaitez envoyer une
HttpClient
demande avec Bearer Token, ce code peut être une bonne solution:la source
Dans net .core, vous pouvez utiliser
ou
la source
SetBasicAuthentication()
n'est pas disponible par défaut, il doit donc s'agir d'une méthode d'extension. Où est-il défini?Il peut être plus facile d'utiliser une bibliothèque existante.
Par exemple, les méthodes d'extension ci-dessous sont ajoutées avec Identity Server 4 https://www.nuget.org/packages/IdentityModel/
la source
Le flux de processus Oauth est complexe et il y a toujours de la place pour une erreur ou une autre. Ma suggestion sera de toujours utiliser le code passe-partout et un ensemble de bibliothèques pour le flux d'authentification OAuth, cela vous facilitera la vie.
Voici le lien pour l'ensemble des bibliothèques. Bibliothèques OAuth pour .Net
la source
cela pourrait fonctionner, si vous recevez un json ou un xml du service et je pense que cela peut vous donner une idée de la façon dont les en-têtes et le type T fonctionnent aussi, si vous utilisez la fonction MakeXmlRequest (mettez les résultats dans xmldocumnet) et MakeJsonRequest (mettez le json dans la classe que vous souhaitez qui a la même structure que la réponse json) de la manière suivante
la source
la source
Cela peut aider à définir l'en-tête:
la source
HttpClient
, nonWebClient
.