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.