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