J'implémente une API créée par d'autres collègues avec Apiary.io, dans un projet d'application Windows Store.
Ils montrent cet exemple de méthode que je dois implémenter:
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();
}
}
Dans cette méthode et dans d'autres, j'ai besoin d'un en-tête avec un jeton que j'obtiens auparavant.
Voici une image de Postman (extension chrome) avec l'en-tête dont je parle:
Comment ajouter cet en-tête d'autorisation à la demande?
Réponses:
Lorsque vous utilisez GetAsync avec HttpClient, vous pouvez ajouter les en-têtes d'autorisation comme suit:
Cela ajoute l'en-tête d'autorisation pour la durée de vie du HttpClient, ce qui est utile si vous accédez à un site où l'en-tête d'autorisation ne change pas.
Voici une réponse SO détaillée
la source
Une réponse plus tardive, mais parce que personne n'a donné cette solution ...
Si vous ne souhaitez pas définir l'en-tête de l'
HttpClient
instance en l'ajoutant auDefaultRequestHeaders
, vous pouvez définir des en-têtes par requête .Mais vous serez obligé d'utiliser le
SendAsync()
méthode.C'est la bonne solution si vous souhaitez réutiliser le
HttpClient
- ce qui est une bonne pratique pourUtilisez-le comme ceci:
la source
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token);
"Bearer" soit un en-tête HTTP non valideusing
mais pourriez instancier dans le constructeur et disposer dans leDispose()
using
sur HttpClient (c'est mauvais), j'ai dit sur HttpRequesMessage (car il a des tampons de mémoire non gérés pour le streaming qui DOIVENT être éliminés après l'utilisation). La demande et la réponse sont et doivent être supprimées à chaque demande (sinon, vous garderez les gros blocs de mémoire verrouillés pendant longtemps). LeHttpClient
est réutilisable, dans une certaine mesure.La réponse acceptée fonctionne mais peut devenir compliquée lorsque je voulais essayer d'ajouter des en-têtes Accept. C'est ce avec quoi j'ai fini. Cela me semble plus simple alors je pense que je vais m'en tenir à l'avenir:
la source
Vous pouvez ajouter les en-têtes dont vous avez besoin au
HttpClient
.Voici un joli tutoriel à ce sujet.
Cela ne fait pas seulement référence aux requêtes POST, vous pouvez également l'utiliser pour les requêtes GET.
la source
Suite à la réponse de greenhoorn, vous pouvez utiliser des "Extensions" comme ceci:
Et utilise:
la source
Parfois, vous n'avez besoin que de ce code.
la source