Найти тему

Настраиваемый HTTP-заголовок с помощью Apache HttpClient

Оглавление

1. Общий обзор

В этом руководстве мы рассмотрим, как установить пользовательский заголовок с помощью HttpClient.

2. Установите заголовок по запросу

Мы можем установить любой пользовательский заголовок в запросе с помощью простого вызова setHeader в запросе:

@Test
void whenRequestHasCustomContentType_thenCorrect() throws IOException {
final HttpGet request = new HttpGet(SAMPLE_URL);
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");

try (CloseableHttpClient client = HttpClients.createDefault()) {
String response = client.execute(request, new BasicHttpClientResponseHandler());
//do something with response
}
}

Как мы видим, мы устанавливаем Content-Type непосредственно в запросе на пользовательское значение – JSON.

3. Установка заголовока по запросу с помощью RequestBuilder, используя HttpClient 4.5

С HttpClient 4.5 мы можем использовать RequestBuilder для установки заголовка. Чтобы задать заголовок, мы будем использовать метод setHeader – в конструкторе:

HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
.setUri(SAMPLE_URL)
.setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
.build();
client.execute(request);

4. Установка заголовока по умолчанию на клиенте

Вместо того чтобы устанавливать заголовок для каждого запроса, мы также можем настроить его как заголовок по умолчанию на самом клиенте:

@Test
void givenConfigOnClient_whenRequestHasCustomContentType_thenCorrect() throws IOException {
final HttpGet request = new HttpGet(SAMPLE_URL);
final Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");
final List<Header> headers = Lists.newArrayList(header);

try (CloseableHttpClient client = HttpClients.custom()
.setDefaultHeaders(headers)
.build()) {

String response = client.execute(request, new BasicHttpClientResponseHandler());
//do something with response
}
}

Это чрезвычайно полезно, когда заголовок должен быть одинаковым для всех запросов – например, для заголовка пользовательского приложения.

5. Заключение

В этой статье показано, как добавить HTTP-заголовок к одному или всем запросам, отправляемым через Apache HttpClient.

Оригинал статьи: https://www.baeldung.com/httpclient-custom-http-header