HttpClient 4 Cookbook

1. Panoramica

Questo libro di cucina mostra come utilizzare Apache HttpClient 4 in una varietà di esempi e casi d'uso.

L'attenzione si concentra su HttpClient 4.3.xe versioni successive , quindi alcuni degli esempi potrebbero non funzionare con le versioni precedenti dell'API.

Il formato del ricettario è incentrato sull'esempio e pratico, non sono necessari dettagli e spiegazioni estranee.

Se vuoi approfondire e imparare altre cose interessanti che puoi fare con HttpClient, vai al tutorial principale di HttpClient .

2. Ricettario

creare il client http

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

invia una richiesta GET di base

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

ottenere il codice di stato della risposta HTTP

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

ottenere il tipo di supporto della risposta

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

ottenere il corpo della risposta

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

configurare il timeout su richiesta

@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); }

configurare il timeout sull'intero client

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

invia una richiesta POST

instance.execute(new HttpPost(SAMPLE_URL));

aggiungere parametri a una richiesta

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

configurare come vengono gestiti i reindirizzamenti per una richiesta HTTP

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

configurare le intestazioni per una richiesta

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

ottenere le intestazioni dalla risposta

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

chiudere / rilasciare risorse

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. Vai in profondità in HttpClient

La libreria HttpClient è uno strumento abbastanza potente se usato correttamente - se vuoi iniziare a esplorare cosa può fare il client - dai un'occhiata ad alcuni dei tutorial:

  • HttpClient 4 - Ottieni il codice di stato
  • HttpClient - Imposta intestazione personalizzata

Puoi anche scavare molto più a fondo in HttpClient esplorando l'intera serie.

4. Conclusione

Questo formato è leggermente diverso da come strutturo di solito i miei articoli - sto pubblicando alcuni dei miei libri di cucina interni di sviluppo su un determinato argomento - su Google Guava, Hamcrest e Mockito - e ora HttpClient. L'obiettivo è avere queste informazioni prontamente disponibili online e aggiungerle ogni volta che mi imbatto in un nuovo esempio utile.

L'implementazione di tutti questi esempi e frammenti di codice può essere trovata in oltre su GitHub .

Questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.