Livre de recettes HttpClient 4

1. Vue d'ensemble

Ce livre de recettes montre comment utiliser Apache HttpClient 4 dans une variété d'exemples et de cas d'utilisation.

L'accent est mis sur HttpClient 4.3.x et supérieur , donc certains des exemples peuvent ne pas fonctionner avec les anciennes versions de l'API.

Le format du livre de cuisine est axé sur l'exemple et pratique - aucun détail ni explication superflue n'est nécessaire.

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

2. Livre de recettes

créer le client http

CloseableHttpClient client = HttpClientBuilder.create().build();

envoyer une requête GET de base

instance.execute(new HttpGet("//www.google.com"));

obtenir le code d'état de la réponse HTTP

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); assertThat(response.getStatusLine().getStatusCode(), equalTo(200));

obtenir le type de média de la réponse

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType(); assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));

obtenir le corps de la réponse

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); String bodyAsString = EntityUtils.toString(response.getEntity()); assertThat(bodyAsString, notNullValue());

configurer le timeout sur une requête

@Test(expected = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException { RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpGet request = new HttpGet(SAMPLE_URL); request.setConfig(requestConfig); instance.execute(request); }

configurer le délai d'expiration sur l'ensemble du client

RequestConfig requestConfig = RequestConfig.custom(). setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);

envoyer une requête POST

instance.execute(new HttpPost(SAMPLE_URL));

ajouter des paramètres à une demande

List params = new ArrayList(); params.add(new BasicNameValuePair("key1", "value1")); params.add(new BasicNameValuePair("key2", "value2")); request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));

configurer la façon dont la redirection est gérée pour une requête HTTP

CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build(); CloseableHttpResponse response = instance.execute(new HttpGet("//t.co/I5YYd9tddw")); assertThat(response.getStatusLine().getStatusCode(), equalTo(301));

configurer les en-têtes pour une requête

HttpGet request = new HttpGet(SAMPLE_URL); request.addHeader(HttpHeaders.ACCEPT, "application/xml"); response = instance.execute(request);

obtenir les en-têtes de la réponse

CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL)); Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE); assertThat(headers, not(emptyArray()));

fermer / libérer des ressources

response = instance.execute(new HttpGet(SAMPLE_URL)); try { HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); instream.close(); } } finally { response.close(); }

3. Plongez dans HttpClient

La bibliothèque HttpClient est un outil assez puissant si elle est utilisée correctement - si vous voulez commencer à explorer ce que le client peut faire - consultez certains des didacticiels:

  • HttpClient 4 - Obtenir le code d'état
  • HttpClient - Définir un en-tête personnalisé

Vous pouvez également creuser beaucoup plus profondément dans HttpClient en explorant toute la série.

4. Conclusion

Ce format est un peu différent de la façon dont je structure habituellement mes articles - je publie certains de mes livres de recettes de développement interne sur un sujet donné - sur Google Guava, Hamcrest etMockito - et maintenant HttpClient. Le but est d'avoir ces informations facilement accessibles en ligne - et d'y ajouter chaque fois que je rencontre un nouvel exemple utile.

L'implémentation de tous ces exemples et extraits de code peut être trouvée dans over sur GitHub .

Il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.