Автор оригинала: Eugen Paraschiv.
1. Обзор
Эта поваренная книга показывает как использовать Apache HttpClient 4 в различных примерах и случаях использования.
Основное внимание уделяется HttpClient 4.3.x и выше , поэтому некоторые примеры могут не работать с более старыми версиями API.
Формат поваренной книги ориентирован на примеры и практичен – никаких посторонних деталей и объяснений не требуется.
Если вы хотите копнуть глубже и узнать другие интересные вещи, которые вы можете сделать с HttpClient – перейдите к основному учебнику HttpClient .
2. Поваренная книга
создание http-клиента
CloseableHttpClient client = HttpClientBuilder.create().build();
отправить базовый запрос GET
instance.execute(new HttpGet("http://www.google.com"));
получить код состояния HTTP-ответа
CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com")); assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
получить тип носителя ответа
CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com")); String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType(); assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));
получите тело ответа
CloseableHttpResponse response = instance.execute(new HttpGet("http://www.google.com")); String bodyAsString = EntityUtils.toString(response.getEntity()); assertThat(bodyAsString, notNullValue());
настройка таймаута для запроса
@Test(expected = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException { RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpGet request = new HttpGet(SAMPLE_URL); request.setConfig(requestConfig); instance.execute(request); }
настройка таймаута для всего клиента
RequestConfig requestConfig = RequestConfig.custom(). setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);
отправить ПОЧТОВЫЙ запрос
instance.execute(new HttpPost(SAMPLE_URL));
добавление параметров в запрос
Listparams = new ArrayList (); params.add(new BasicNameValuePair("key1", "value1")); params.add(new BasicNameValuePair("key2", "value2")); request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
настройка обработки перенаправления для HTTP – запроса
CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build(); CloseableHttpResponse response = instance.execute(new HttpGet("http://t.co/I5YYd9tddw")); assertThat(response.getStatusLine().getStatusCode(), equalTo(301));
настройка заголовков для запроса
HttpGet request = new HttpGet(SAMPLE_URL); request.addHeader(HttpHeaders.ACCEPT, "application/xml"); response = instance.execute(request);
получите заголовки из ответа
CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL)); Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE); assertThat(headers, not(emptyArray()));
закрыть/освободить ресурсы
response = instance.execute(new HttpGet(SAMPLE_URL)); try { HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); instream.close(); } } finally { response.close(); }
3. Углубитесь в HttpClient
Библиотека HttpClient является довольно мощным инструментом при правильном использовании – если вы хотите начать исследовать, что может сделать клиент – ознакомьтесь с некоторыми учебными пособиями:
- HttpClient 4 – Получить код состояния
- HttpClient – Установить Пользовательский заголовок
Вы также можете копнуть намного глубже в HttpClient , исследуя всю серию .
4. Заключение
Этот формат немного отличается от того, как я обычно структурирую свои статьи – Я публикую некоторые из моих внутренних кулинарных книг разработки на заданную тему – на Google Guava , Hamcrest и Mockito – а теперь HttpClient. Цель состоит в том, чтобы иметь эту информацию легко доступной в Интернете – и добавлять к ней всякий раз, когда я сталкиваюсь с новым полезным примером.
Реализацию всех этих примеров и фрагментов кода можно найти в over on GitHub .
Это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.