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.