HttpClient 4 szakácskönyv
1. Áttekintés
Ez a szakácskönyv megmutatja hogyan kell használni az Apache HttpClient 4 alkalmazást különféle példákban és felhasználási esetekben.
A hangsúly a HttpClient 4.3.x és újabb, így néhány példa nem biztos, hogy működik az API régebbi verzióival.
A szakácskönyv formátuma példaértékű és praktikus - nincs szükség idegen részletekre és magyarázatokra.
Ha mélyebbre akarsz ásni, és további jó dolgokat akarsz megtudni, amit a HttpClient-nel tehetsz - menj tovább a fő HttpClient oktatóanyag.
2. Szakácskönyv
hozza létre a http klienst
CloseableHttpClient kliens = HttpClientBuilder.create (). Build ();
küldje el az alapvető GET kérést
instance.execute (új HttpGet ("// www.google.com"));
kapja meg a HTTP válasz állapotkódját
CloseableHttpResponse response = instance.execute (új HttpGet ("// www.google.com")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (200));
kapja meg a válasz Média típusát
CloseableHttpResponse response = instance.execute (új HttpGet ("// www.google.com")); String contentMimeType = ContentType.getOrDefault (response.getEntity ()). GetMimeType (); assertThat (contentMimeType, equalTo (ContentType.TEXT_HTML.getMimeType ()));
megkapja a válasz testét
CloseableHttpResponse response = instance.execute (új HttpGet ("// www.google.com")); String bodyAsString = EntityUtils.toString (response.getEntity ()); assertThat (bodyAsString, notNullValue ());
konfigurálja az időkorlátot egy kérésre
@Test (várható = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException () dobja a ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.customout (set. (SetTime) (Set. HttpGet kérés = új HttpGet (SAMPLE_URL); request.setConfig (requestConfig); instance.execute (kérés); }
konfigurálja az időkorlátot az egész kliensen
RequestConfig requestConfig = RequestConfig.custom (). setConnectionRequestTimeout (1000) .setConnectTimeout (1000) .setSocketTimeout (1000) .build (); HttpClientBuilder builder = HttpClientBuilder.create (). SetDefaultRequestConfig (requestConfig);
küldjön POST kérést
instance.execute (új HttpPost (SAMPLE_URL));
paramétereket adhat hozzá egy kéréshez
List params = new ArrayList (); params.add (új BasicNameValuePair ("kulcs1", "érték1")); params.add (új BasicNameValuePair ("kulcs2", "érték2")); request.setEntity (new UrlEncodedFormEntity (params, Consts.UTF_8));
konfigurálja az átirányítás kezelését egy HTTP-kérelemnél
CloseableHttpClient instance = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse response = instance.execute (új HttpGet ("// t.co/I5YYd9tddw")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (301));
konfigurálja a fejléceket egy kéréshez
HttpGet kérés = új HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "alkalmazás / xml"); válasz = instance.execute (kérés);
kapja meg a fejléceket a válaszból
CloseableHttpResponse response = instance.execute (új HttpGet (SAMPLE_URL)); Fejléc [] fejlécek = response.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (fejlécek, nem (emptyArray ()));
erőforrások bezárása / felszabadítása
válasz = példány.execute (új HttpGet (SAMPLE_URL)); próbáld ki a {HttpEntity entitást = response.getEntity (); if (entitás! = null) {InputStream instream = entitás.getContent (); instream.close (); }} végül {response.close (); }
3. Menjen mélyen a HttpClient-be
A HttpClient könyvtár elég hatékony eszköz, ha helyesen használják - ha el akarja indítani annak feltárása, hogy az ügyfél mit tehet - nézzen meg néhány oktatóanyagot:
- HttpClient 4 - Szerezze be az állapotkódot
- HttpClient - Egyéni fejléc beállítása
Te is ásson sokkal mélyebben a HttpClientbe az egész sorozat felfedezésével.
4. Következtetés
Ez a formátum kissé eltér attól, ahogy általában felépítem a cikkeimet - Közzéteszem néhány belső fejlesztési szakácskönyvemet egy adott témában - a Google Guava, Hamcrest ésMockito - és most HttpClient. A cél az, hogy ezek az információk könnyen elérhetőek legyenek online - és kiegészüljenek velük, amikor új hasznos példával találkozom.
Mindezen példák és kódrészletek megvalósítása megtalálható a GitHub oldalán.
Ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.