HttpClient 4 Kokebok
1. Oversikt
Denne kokeboken viser hvordan du bruker Apache HttpClient 4 i en rekke eksempler og brukstilfeller.
Fokuset er på HttpClient 4.3.x og nyere, så noen av eksemplene fungerer kanskje ikke med de eldre versjonene av API.
Kokeboken er eksempelvis fokusert og praktisk - ingen fremmede detaljer og forklaringer er nødvendige.
Hvis du vil grave dypere og lære andre kule ting du kan gjøre med HttpClient - gå videre til den viktigste HttpClient-opplæringen.
2. Kokebok
opprette http-klienten
CloseableHttpClient client = HttpClientBuilder.create (). Build ();
send grunnleggende GET-forespørsel
eksempel.execute (ny HttpGet ("// www.google.com"));
få statuskoden til HTTP-svaret
CloseableHttpResponse response = instance.execute (nye HttpGet ("// www.google.com")); assertThat (respons.getStatusLine (). getStatusCode (), equalTo (200));
få mediatypen til svaret
CloseableHttpResponse response = instance.execute (nye HttpGet ("// www.google.com")); Streng contentMimeType = ContentType.getOrDefault (respons.getEntity ()). GetMimeType (); assertThat (contentMimeType, equalTo (ContentType.TEXT_HTML.getMimeType ()));
få svaret
CloseableHttpResponse response = instance.execute (nye HttpGet ("// www.google.com")); Streng bodyAsString = EntityUtils.toString (respons.getEntity ()); assertThat (bodyAsString, notNullValue ());
konfigurer tidsavbrudd på en forespørsel
@Test (forventet = SocketTimeoutException.class) offentlig tomrom gittLowTimeout_whenExecutingRequestWithTimeout_thenException () kaster ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () .setConnectionRequestTime. (1000). HttpGet forespørsel = ny HttpGet (SAMPLE_URL); request.setConfig (requestConfig); forekomst. utføre (forespørsel); }
konfigurer tidsavbrudd på hele klienten
RequestConfig requestConfig = RequestConfig.custom (). setConnectionRequestTimeout (1000) .setConnectTimeout (1000) .setSocketTimeout (1000) .build (); HttpClientBuilder builder = HttpClientBuilder.create (). SetDefaultRequestConfig (requestConfig);
send en POST-forespørsel
forekomst. utfør (ny HttpPost (SAMPLE_URL));
legge til parametere i en forespørsel
Liste params = ny ArrayList (); params.add (ny BasicNameValuePair ("nøkkel1", "verdi1")); params.add (ny BasicNameValuePair ("key2", "value2")); request.setEntity (ny UrlEncodedFormEntity (params, Consts.UTF_8));
konfigurere hvordan omdirigering håndteres for en HTTP-forespørsel
CloseableHttpClient-forekomst = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse response = instance.execute (nye HttpGet ("// t.co/I5YYd9tddw")); assertThat (respons.getStatusLine (). getStatusCode (), equalTo (301));
konfigurer topptekstene for en forespørsel
HttpGet forespørsel = ny HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "application / xml"); respons = forekomst. utfør (forespørsel);
få overskriftene fra svaret
CloseableHttpResponse response = instance.execute (ny HttpGet (SAMPLE_URL)); Topptekst [] topptekster = respons.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (headers, not (emptyArray ()));
lukk / frigjør ressurser
respons = forekomst. utfør (ny HttpGet (SAMPLE_URL)); prøv {HttpEntity entity = response.getEntity (); hvis (enhet! = null) {InputStream instream = entity.getContent (); instream.close (); }} til slutt {respons.close (); }
3. Gå dypt inn i HttpClient
HttpClient-biblioteket er et ganske kraftig verktøy hvis det brukes riktig - hvis du vil starte utforske hva klienten kan gjøre - sjekk ut noen av veiledningene:
- HttpClient 4 - Få statuskoden
- HttpClient - Angi tilpasset overskrift
Du kan også grave mye dypere inn i HttpClient ved å utforske hele serien.
4. Konklusjon
Dette formatet er litt annerledes enn hvordan jeg vanligvis strukturerer artiklene mine - Jeg publiserer noen av mine interne utviklings kokebøker om et gitt emne - på Google Guava, Hamcrest ogMockito - og nå HttpClient. Målet er å ha denne informasjonen tilgjengelig online - og legge til den når jeg støter på et nytt nyttig eksempel.
Implementeringen av alle disse eksemplene og kodebiter kan du finne i over på GitHub.
Dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.