HttpClient 4 Kuharica
1. Pregled
Ova kuharica pokazuje kako koristiti Apache HttpClient 4 u raznim primjerima i slučajevima upotrebe.
Fokus je na HttpClient 4.3.x i noviji, tako da neki primjeri možda neće raditi sa starijim verzijama API-ja.
Oblik kuharice usmjeren je na primjere i praktičan - nisu potrebni nikakvi strani detalji i objašnjenja.
Ako želite dublje kopati i naučiti druge cool stvari koje možete učiniti s HttpClientom, krenite na glavni vodič za HttpClient.
2. Kuharica
stvoriti http klijent
CloseableHttpClient client = HttpClientBuilder.create (). Build ();
poslati osnovni GET zahtjev
instance.execute (novi HttpGet ("// www.google.com"));
dobiti statusni kod HTTP odgovora
CloseableHttpResponse response = instance.execute (novi HttpGet ("// www.google.com")); assertThat (response.getStatusLine (). getStatusCode (), jednakTo (200));
dobiti vrstu medija odgovora
CloseableHttpResponse response = instance.execute (novi HttpGet ("// www.google.com")); Niz contentMimeType = ContentType.getOrDefault (response.getEntity ()). GetMimeType (); assertThat (contentMimeType, jednakTo (ContentType.TEXT_HTML.getMimeType ()));
dobiti tijelo odgovora
CloseableHttpResponse response = instance.execute (novi HttpGet ("// www.google.com")); Niz bodyAsString = EntityUtils.toString (response.getEntity ()); assertThat (bodyAsString, notNullValue ());
konfigurirajte vremensko ograničenje na zahtjev
@Test (očekuje se = SocketTimeoutException.class) javna praznina givenLowTimeout_whenExecutingRequestWithTimeout_thenException () baca ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () 1000set (Outset) Outset (Outset) Outset. Zahtjev za HttpGet = novi HttpGet (SAMPLE_URL); request.setConfig (requestConfig); instance.execute (zahtjev); }
konfigurirajte timeout na cijelom klijentu
RequestConfig requestConfig = RequestConfig.custom (). setConnectionRequestTimeout (1000) .setConnectTimeout (1000) .setSocketTimeout (1000) .build (); HttpClientBuilder builder = HttpClientBuilder.create (). SetDefaultRequestConfig (requestConfig);
pošaljite zahtjev za POST
instance.execute (novi HttpPost (SAMPLE_URL));
dodajte parametre zahtjevu
Parametri popisa = new ArrayList (); params.add (novi BasicNameValuePair ("key1", "value1")); params.add (novi BasicNameValuePair ("key2", "value2")); request.setEntity (novi UrlEncodedFormEntity (params, Consts.UTF_8));
konfigurirajte način na koji se preusmjeravanje obrađuje za HTTP zahtjev
CloseableHttpClient instanca = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse odgovor = instance.execute (novi HttpGet ("// t.co/I5YYd9tddw")); assertThat (response.getStatusLine (). getStatusCode (), jednakTo (301));
konfigurirajte zaglavlja za zahtjev
Zahtjev za HttpGet = novi HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "application / xml"); odgovor = instance.execute (zahtjev);
dobiti zaglavlja iz odgovora
CloseableHttpResponse odgovor = instance.execute (novi HttpGet (SAMPLE_URL)); Zaglavlje [] zaglavlja = response.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (zaglavlja, a ne (emptyArray ()));
zatvori / pusti resurse
response = instance.execute (novi HttpGet (SAMPLE_URL)); isprobajte {HttpEntity entity = response.getEntity (); if (entity! = null) {InputStream instream = entity.getContent (); instream.close (); }} napokon {response.close (); }
3. Uđite duboko u HttpClient
Biblioteka HttpClient prilično je moćan alat ako se pravilno koristi - ako želite započeti istražujući što klijent može učiniti - pogledajte neke tutorijale:
- HttpClient 4 - Nabavite statusni kod
- HttpClient - Postavite prilagođeno zaglavlje
Također možete kopati puno dublje u HttpClient istraživanjem cijele serije.
4. Zaključak
Ovaj se format malo razlikuje od onoga kako obično strukturiram svoje članke - Objavljujem neke od svojih kuharica za interni razvoj na zadanu temu - na Googleu Guava, Hamcrest iMockito - i sada HttpClient. Cilj je imati ove informacije lako dostupne na mreži - i dodati ih kad god naletim na novi koristan primjer.
Implementacija svih ovih primjera i isječaka koda možete pronaći u preko na GitHubu.
Ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.