HttpClient 4 kookboek
1. Overzicht
Dit kookboek laat zien hoe u de Apache HttpClient gebruikt 4 in een verscheidenheid aan voorbeelden en use-cases.
De nadruk ligt op HttpClient 4.3.x en hoger, dus sommige voorbeelden werken mogelijk niet met de oudere versies van de API.
Het formaat van het kookboek is voorbeeldgericht en praktisch - geen externe details en uitleg nodig.
Als je dieper wilt graven en andere coole dingen wilt leren die je kunt doen met de HttpClient - ga dan naar de belangrijkste HttpClient-zelfstudie.
2. Kookboek
maak de http-client
CloseableHttpClient client = HttpClientBuilder.create (). Build ();
stuur een basis GET-verzoek
instance.execute (nieuwe HttpGet ("// www.google.com"));
verkrijg de statuscode van de HTTP-reactie
CloseableHttpResponse response = instance.execute (nieuwe HttpGet ("// www.google.com")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (200));
verkrijg het mediatype van het antwoord
CloseableHttpResponse response = instance.execute (nieuwe HttpGet ("// www.google.com")); String contentMimeType = ContentType.getOrDefault (response.getEntity ()). GetMimeType (); assertThat (contentMimeType, equalTo (ContentType.TEXT_HTML.getMimeType ()));
de kern van het antwoord opvragen
CloseableHttpResponse response = instance.execute (nieuwe HttpGet ("// www.google.com")); String bodyAsString = EntityUtils.toString (response.getEntity ()); assertThat (bodyAsString, notNullValue ());
configureer de time-out op een verzoek
@Test (verwacht = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException () gooit ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () .setConnectionRequestTimeout (1000) .setConnectionRequestTimeout (1000). HttpGet request = nieuwe HttpGet (SAMPLE_URL); request.setConfig (requestConfig); instance.execute (verzoek); }
configureer een time-out voor de hele client
RequestConfig requestConfig = RequestConfig.custom (). setConnectionRequestTimeout (1000) .setConnectTimeout (1000) .setSocketTimeout (1000) .build (); HttpClientBuilder-builder = HttpClientBuilder.create (). SetDefaultRequestConfig (requestConfig);
stuur een POST-verzoek
instance.execute (nieuwe HttpPost (SAMPLE_URL));
parameters toevoegen aan een verzoek
Lijstparameters = nieuwe ArrayList (); params.add (nieuwe BasicNameValuePair ("key1", "value1")); params.add (nieuwe BasicNameValuePair ("key2", "value2")); request.setEntity (nieuwe UrlEncodedFormEntity (params, Consts.UTF_8));
configureer hoe omleidingen worden afgehandeld voor een HTTP-verzoek
CloseableHttpClient-instantie = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse response = instance.execute (nieuwe HttpGet ("// t.co/I5YYd9tddw")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (301));
configureer de headers voor een verzoek
HttpGet request = nieuwe HttpGet (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "application / xml"); response = instance.execute (verzoek);
haal de kopteksten uit het antwoord
CloseableHttpResponse response = instance.execute (nieuwe HttpGet (SAMPLE_URL)); Header [] headers = response.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (headers, not (emptyArray ()));
bronnen sluiten / vrijgeven
response = instance.execute (nieuwe HttpGet (SAMPLE_URL)); probeer {HttpEntity entity = response.getEntity (); if (entiteit! = null) {InputStream instream = entity.getContent (); instream.close (); }} eindelijk {response.close (); }
3. Ga diep in HttpClient
De HttpClient-bibliotheek is een behoorlijk krachtig hulpmiddel als het correct wordt gebruikt - als u wilt beginnen onderzoeken wat de cliënt kan doen - bekijk enkele van de tutorials:
- HttpClient 4 - Haal de statuscode op
- HttpClient - Stel aangepaste koptekst in
Je kan ook graaf veel dieper in de HttpClient door de hele serie te verkennen.
4. Conclusie
Dit formaat is een beetje anders dan hoe ik mijn artikelen gewoonlijk structureer - Ik publiceer enkele van mijn kookboeken voor interne ontwikkeling over een bepaald onderwerp - op Google Guava, Hamcrest en Mockito - en nu HttpClient. Het doel is om deze informatie direct online beschikbaar te hebben - en om er iets aan toe te voegen wanneer ik een nieuw bruikbaar voorbeeld tegenkom.
De implementatie van al deze voorbeelden en codefragmenten is te vinden in meer dan op GitHub.
Dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.