Je mets en œuvre une api faite par d'autres collègues avec Apiary.io, dans un projet d'application Windows Store.
ils montrent cet exemple d'une méthode que je dois mettre en œuvre
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 cela et quelques autres méthodes je dois avoir un en-tête avec un jeton que je reçois avant
voici une image de postman (chrome extension) avec l'en-tête im qui parle de
comment puis-je ajouter cet en-tête d'autorisation à la demande?
Lorsque vous utilisez GetAsync avec HttpClient, vous pouvez ajouter les en-têtes d'autorisation de la manière suivante:
httpClient.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("Bearer", "Your Oauth token");
Cela ajoute l’en-tête d’autorisation pour la durée de vie du HttpClient. Il est donc utile si vous visitez un site où l’en-tête d’autorisation ne change pas.
Voici un détaillé SO réponse
Une réponse ultérieure, mais parce que personne n'a donné cette solution ...
Si vous ne souhaitez pas définir l'en-tête sur l'instance HttpClient
en l'ajoutant à DefaultRequestHeaders
, , vous pouvez définir des en-têtes par requête .
Mais vous serez obligé d'utiliser la méthode SendAsync()
.
C’est la bonne solution si vous souhaitez réutiliser le HttpClient
- ce qui est une bonne pratique pour
Utilisez-le comme ceci:
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"))
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", your_token);
httpClient.SendAsync(requestMessage);
}
La réponse acceptée fonctionne mais peut être compliquée lorsque je voulais ajouter des en-têtes Accepter. C'est ce que j'ai fini avec. Cela me semble plus simple alors je pense que je vais m'en tenir à l'avenir:
client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring);
Vous pouvez ajouter tous les en-têtes dont vous avez besoin à la variable 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.
Après la réponse du greenhoorn, vous pouvez utiliser "Extensions" comme ceci:
public static class HttpClientExtensions
{
public static HttpClient AddTokenToHeader(this HttpClient cl, string token)
{
//int timeoutSec = 90;
//cl.Timeout = new TimeSpan(0, 0, timeoutSec);
string contentType = "application/json";
cl.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
cl.DefaultRequestHeaders.Add("Authorization", String.Format("Bearer {0}", token));
var userAgent = "d-fens HttpClient";
cl.DefaultRequestHeaders.Add("User-Agent", userAgent);
return cl;
}
}
Et utilise:
string _tokenUpdated = "TOKEN";
HttpClient _client;
_client.AddTokenToHeader(_tokenUpdated).GetAsync("/api/values")