Kuchárska kniha HttpClient 4

1. Prehľad

Táto kuchárka ukazuje ako používať Apache HttpClient 4 v rôznych príkladoch a prípadoch použitia.

Zameranie je na HttpClient 4.3.xa vyššie, takže niektoré z príkladov nemusia so staršími verziami API fungovať.

Formát kuchárskej knihy je príkladne zameraný a praktický - nie sú potrebné žiadne ďalšie podrobnosti ani vysvetlenia.

Ak sa chcete prehĺbiť a naučiť sa ďalšie super veci, ktoré môžete s HttpClient robiť - choďte ďalej hlavný návod HttpClient.

2. Kuchárska kniha

vytvorte klienta HTTP

CloseableHttpClient client = HttpClientBuilder.create (). Build ();

poslať základnú požiadavku GET

instance.execute (nový HttpGet ("// www.google.com"));

získajte stavový kód odpovede HTTP

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

získať typ média odpovede

CloseableHttpResponse response = instance.execute (nový HttpGet ("// www.google.com")); Reťazec contentMimeType = ContentType.getOrDefault (response.getEntity ()). GetMimeType (); assertThat (contentMimeType, equalTo (ContentType.TEXT_HTML.getMimeType ()));

získať telo odpovede

CloseableHttpResponse response = instance.execute (nový HttpGet ("// www.google.com")); Reťazec bodyAsString = EntityUtils.toString (response.getEntity ()); assertThat (bodyAsString, notNullValue ());

nakonfigurovať časový limit na požiadanie

@Test (expect = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException () vyvolá ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () .setConnectionRequestTimeout (1000). (1000). HttpGet požiadavka = nový HttpGet (SAMPLE_URL); request.setConfig (requestConfig); instance.execute (žiadosť); }

nakonfigurovať časový limit na celom klientovi

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

poslať POST požiadavku

instance.execute (nový HttpPost (SAMPLE_URL));

pridať parametre k požiadavke

Zoznam parametrov = new ArrayList (); params.add (nový BasicNameValuePair ("kľúč1", "hodnota1")); params.add (new BasicNameValuePair ("key2", "value2")); request.setEntity (new UrlEncodedFormEntity (params, Consts.UTF_8));

nakonfigurovať spôsob spracovania presmerovania pre požiadavku HTTP

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

nakonfigurovať hlavičky pre požiadavku

HttpGet požiadavka = nový HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "aplikácia / xml"); response = instance.execute (požiadavka);

dostať hlavičky z odpovede

CloseableHttpResponse response = instance.execute (nový HttpGet (SAMPLE_URL)); Hlavička [] hlavičky = response.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (hlavičky, nie (emptyArray ()));

zavrieť / uvoľniť zdroje

response = instance.execute (new HttpGet (SAMPLE_URL)); try {HttpEntity entity = response.getEntity (); if (entity! = null) {InputStream instream = entity.getContent (); instream.close (); }} nakoniec {response.close (); }

3. Prejdite hlboko do HttpClient

Knižnica HttpClient je veľmi výkonným nástrojom, ak sa používa správne - ak chcete začať skúmanie toho, čo klient môže urobiť - pozrite si niektoré z tutoriálov:

  • HttpClient 4 - Získajte stavový kód
  • HttpClient - nastavenie vlastnej hlavičky

Môžete tiež kopať hlbšie do HttpClient preskúmaním celej série.

4. Záver

Tento formát sa trochu líši od toho, ako obvykle štruktúrujem svoje články - Vydávam niektoré zo svojich kuchárskych kníh pre interný vývoj na danú tému - na Google Guava, Hamcrest a Mockito - a teraz HttpClient. Cieľom je mať tieto informácie ľahko dostupné online - a doplniť ich, kedykoľvek narazím na nový užitočný príklad.

Implementácia všetkých týchto príkladov a útržkov kódu nájdete viac na GitHub.

Toto je projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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