En-tête HTTP personnalisé avec HttpClient

1. Vue d'ensemble

Dans ce didacticiel, nous verrons comment définir un en-tête personnalisé avec HttpClient.

Si vous souhaitez approfondir et apprendre d'autres choses intéressantes que vous pouvez faire avec HttpClient , rendez-vous au didacticiel principal HttpClient.

2. Définir l'en-tête sur demande - 4.3 et plus

HttpClient 4.3 a introduit une nouvelle façon de créer des requêtes - RequestBuilder . Pour définir un en-tête, nous utiliserons la méthode setHeader - sur le générateur:

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

3. Définir l'en-tête sur demande - Avant 4.3

Dans les versions antérieures à 4.3 de HttpClient, nous pouvons définir n'importe quel en-tête personnalisé sur une requête avec un simple appel setHeader sur la requête:

HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(SAMPLE_URL); request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); client.execute(request);

Comme nous pouvons le voir, nous définissons le Content-Type directement sur la demande sur une valeur personnalisée - JSON.

4. Définir l'en-tête par défaut sur le client

Au lieu de définir l'en-tête sur chaque demande, nous pouvons également le configurer comme en-tête par défaut sur le client lui-même:

Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json"); List headers = Lists.newArrayList(header); HttpClient client = HttpClients.custom().setDefaultHeaders(headers).build(); HttpUriRequest request = RequestBuilder.get().setUri(SAMPLE_URL).build(); client.execute(request);

Ceci est extrêmement utile lorsque l'en-tête doit être le même pour toutes les demandes, comme un en-tête d'application personnalisé.

5. Conclusion

Cet article a illustré comment ajouter un en-tête HTTP à une ou à toutes les demandes envoyées via Apache HttpClient.

L'implémentation de tous ces exemples et extraits de code se trouve dans le projet GitHub.