HttpClient 4 Kogebog

1. Oversigt

Denne kogebog viser hvordan man bruger Apache HttpClient 4 i en række eksempler og brugssager.

Fokus er på HttpClient 4.3.x og derover, så nogle af eksemplerne fungerer muligvis ikke med de ældre versioner af API'en.

Kogebogens format er eksempelvis fokuseret og praktisk - ingen fremmede detaljer og forklaringer er nødvendige.

Hvis du vil grave dybere og lære andre seje ting, kan du gøre med HttpClient - gå videre til den vigtigste HttpClient-tutorial.

2. Kogebog

Opret http-klienten

CloseableHttpClient-klient = HttpClientBuilder.create (). Build ();

send grundlæggende GET-anmodning

instans.execute (ny HttpGet ("// www.google.com"));

få statuskoden til HTTP-svaret

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

få medietypen for svaret

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

få kroppen af ​​svaret

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

konfigurer timeout på en anmodning

@Test (forventet = SocketTimeoutException.class) offentlig ugyldighed givenLowTimeout_whenExecutingRequestWithTimeout_thenException () kaster ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () .setConnectionRequestTime. (1000). HttpGet anmodning = ny HttpGet (SAMPLE_URL); request.setConfig (requestConfig); instans.execute (anmodning); }

konfigurer timeout på hele klienten

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

send en POST-anmodning

eksempel.execute (nyt HttpPost (SAMPLE_URL));

tilføj parametre til en anmodning

Listeparametre = ny ArrayList (); params.add (ny BasicNameValuePair ("nøgle1", "værdi1")); params.add (ny BasicNameValuePair ("key2", "value2")); request.setEntity (ny UrlEncodedFormEntity (params, Consts.UTF_8));

konfigurere, hvordan omdirigering håndteres for en HTTP-anmodning

CloseableHttpClient-forekomst = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse response = instance.execute (ny HttpGet ("// t.co/I5YYd9tddw")); assertThat (respons.getStatusLine (). getStatusCode (), equalTo (301));

konfigurer overskrifterne til en anmodning

HttpGet anmodning = ny HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "application / xml"); respons = eksempel.execute (anmodning);

få overskrifterne fra svaret

CloseableHttpResponse response = instance.execute (ny HttpGet (SAMPLE_URL)); Overskrift [] overskrifter = respons.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (overskrifter, ikke (tomArray ()));

luk / frigør ressourcer

respons = forekomst. udfør (nyt HttpGet (SAMPLE_URL)); prøv {HttpEntity entity = response.getEntity (); hvis (enhed! = null) {InputStream instream = entity.getContent (); instream.close (); }} endelig {respons.close (); }

3. Gå dybt ind i HttpClient

HttpClient-biblioteket er et ret stærkt værktøj, hvis det bruges korrekt - hvis du vil starte udforske hvad klienten kan gøre - tjek nogle af vejledningerne:

  • HttpClient 4 - Hent statuskoden
  • HttpClient - Indstil brugerdefineret overskrift

Du kan også grave meget dybere ned i HttpClient ved at udforske hele serien.

4. Konklusion

Dette format er lidt anderledes end hvordan jeg normalt strukturerer mine artikler - Jeg udgiver nogle af mine interne udviklingskogebøger om et givet emne - på Google Guava, Hamcrest ogMockito - og nu HttpClient. Målet er at have disse oplysninger tilgængelige online - og tilføje dem, når jeg løber ind i et nyt nyttigt eksempel.

Implementeringen af ​​alle disse eksempler og kodestykker kan findes i over på GitHub.

Dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.