Рубрики
Без рубрики

HttpClient 4 Поваренная книга

HttpClient 4 примеры и рекомендации.

Автор оригинала: 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));

добавление параметров в запрос

List params = 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, поэтому его должно быть легко импортировать и запускать как есть.