HttpClient 4 Kochbuch

1. Übersicht

Dieses Kochbuch zeigt anhand verschiedener Beispiele und Anwendungsfälle , wie Sie den Apache HttpClient 4 verwenden.

Der Fokus liegt auf HttpClient 4.3.x und höher , daher funktionieren einige Beispiele möglicherweise nicht mit den älteren Versionen der API.

Das Format des Kochbuchs ist beispielhaft und praktisch - es sind keine überflüssigen Details und Erklärungen erforderlich.

Wenn Sie tiefer graben und andere coole Dinge lernen möchten, die Sie mit dem HttpClient tun können, gehen Sie zum Haupt-HttpClient-Tutorial .

2. Kochbuch

Erstellen Sie den http-Client

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

Senden Sie eine grundlegende GET-Anfrage

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

Rufen Sie den Statuscode der HTTP-Antwort ab

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

Rufen Sie den Medientyp der Antwort ab

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

Holen Sie sich den Körper der Antwort

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

Konfigurieren Sie das Zeitlimit für eine Anforderung

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

Konfigurieren Sie das Zeitlimit auf dem gesamten Client

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

Senden Sie eine POST-Anfrage

instance.execute(new HttpPost(SAMPLE_URL));

Fügen Sie einer Anfrage Parameter hinzu

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

Konfigurieren Sie, wie die Umleitung für eine HTTP-Anforderung behandelt wird

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

Konfigurieren Sie die Header für eine Anforderung

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

Holen Sie sich die Header aus der Antwort

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

Ressourcen schließen / freigeben

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. Gehen Sie tief in HttpClient

Die HttpClient-Bibliothek ist bei korrekter Verwendung ein ziemlich leistungsfähiges Tool. Wenn Sie herausfinden möchten , was der Client tun kann, lesen Sie einige der Tutorials:

  • HttpClient 4 - Statuscode abrufen
  • HttpClient - Benutzerdefinierten Header festlegen

Sie können auch viel tiefer in den HttpClient eintauchen, indem Sie die gesamte Serie erkunden.

4. Fazit

Dieses Format unterscheidet sich ein wenig von der Art und Weise, wie ich meine Artikel normalerweise strukturiere. Ich veröffentliche einige meiner internen Entwicklungskochbücher zu einem bestimmten Thema - auf Google Guava, Hamcrest und Mockito - und jetzt auf HttpClient. Ziel ist es, diese Informationen online verfügbar zu machen - und sie zu ergänzen, wenn ich auf ein neues nützliches Beispiel stoße.

Die Implementierung all dieser Beispiele und Codefragmente finden Sie auf GitHub .

Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.