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.