HttpClient 4 Kochbuch
1. Überblick
Dieses Kochbuch zeigthow to use the Apache HttpClient 4 in einer Vielzahl von Beispielen und Anwendungsfällen.
Der Fokus liegt aufHttpClient 4.3.x and above, daher funktionieren einige Beispiele möglicherweise nicht mit den älteren Versionen der API.
Das Format des Kochbuchs ist beispielorientiert und praktisch - 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 zuthe main HttpClient tutorial.
2. Kochbuch
Erstellen Sie den http-Client
CloseableHttpClient client = HttpClientBuilder.create().build();
Senden Sie eine grundlegende GET-Anfrage
instance.execute(new HttpGet("http://www.google.com"));
Rufen Sie den Statuscode der HTTP-Antwort ab
CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com"));
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
Rufen Sie den Medientyp der Antwort ab
CloseableHttpResponse response = instance.execute(new HttpGet("http://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("http://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("http://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()));
close/release resources
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 Sieexploring what the client can do starten möchten, lesen Sie einige der Tutorials:
Sie können auchdig a lot deeper into the HttpClient durch Erkunden vonthe entire series.
4. Fazit
Dieses Format unterscheidet sich ein wenig von der Art und Weise, wie ich meine Artikel normalerweise strukturiere -I’m publishing some of my internal development cookbooks zu einem bestimmten Thema - aufGoogle Guava,Hamcrest undMockito - und jetzt HttpClient. Das 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 Codefragmentecan be found in over on GitHub.
Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.