190 votes

Ajout d'en-têtes Http à HttpClient

Je dois ajouter des en-têtes http au HttpClient avant d'envoyer une requête à un service web. Comment puis-je le faire pour une demande individuelle (par opposition à l'ajout d'en-têtes http au HttpClient pour toutes les demandes futures) ? Je ne suis pas certain que cela soit possible.

var client = new HttpClient();
var task =
    client.GetAsync("http://www.someURI.com")
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

295voto

Darrel Miller Points 56797

Créer un HttpRequestMessage la méthode est définie comme suit GET , définissez vos en-têtes et utilisez ensuite SendAsync au lieu de GetAsync .

var client = new HttpClient();
var request = new HttpRequestMessage() {
    RequestUri = new Uri("http://www.someURI.com"),
    Method = HttpMethod.Get,
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
var task = client.SendAsync(request)
    .ContinueWith((taskwithmsg) =>
    {
        var response = taskwithmsg.Result;

        var jsonTask = response.Content.ReadAsAsync<JsonObject>();
        jsonTask.Wait();
        var jsonObject = jsonTask.Result;
    });
task.Wait();

43voto

Taran Points 17

Quand il peut s'agir du même en-tête pour toutes les demandes ou si vous disposez du client après chaque requête, vous pouvez utiliser la fonction DefaultRequestHeaders.Add option :

client.DefaultRequestHeaders.Add("apikey","xxxxxxxxx");

-4voto

Zimba Points 156

Pour définir des en-têtes personnalisés SUR UNE DEMANDE, construisez une demande avec l'en-tête personnalisé avant de la passer à httpclient pour l'envoyer au serveur http. ex :

HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
  .setUri(someURL)
  .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  .build();
client.execute(request);

L'en-tête par défaut est SET ON HTTPCLIENT à envoyer à chaque demande au serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X