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.


$config[zx-auto] not found$config[zx-overlay] not found