Перейти к основному содержимому

Добавление параметров в запросы Apache HttpClient

· 2 мин. чтения

1. Введение

HttpClient является частью проекта Apache HttpComponents, который предоставляет набор инструментов низкоуровневых компонентов Java, ориентированных на HTTP и связанные с ним протоколы. Наиболее важной функцией HttpClient является выполнение методов HTTP.

В этом кратком руководстве мы обсудим добавление параметров в запросы HttpClient . Мы узнаем, как использовать UriBuilder с парами "имя-значение" String, а также с NameValuePair s. Точно так же мы увидим, как передавать параметры с помощью UrlEncodedFormEntity .

2. Добавьте параметры в запросы HttpClient с помощью UriBuilder

UriBuilder помогает нам легко создавать URI и добавлять параметры с помощью шаблона построителя. Мы можем добавить параметры, используя пары "имя-значение " типа String , или использовать для этой цели класс NameValuePair .

В этом примере конечный URL должен выглядеть так:

https://example.com?param1=value1&param2=value2

Давайте посмотрим, как использовать пары "имя-значение " String :

public CloseableHttpResponse sendHttpRequest() {
HttpGet httpGet = new HttpGet("https://example.com");
URI uri = new URIBuilder(httpGet.getURI())
.addParameter("param1", "value1")
.addParameter("param2", "value2")
.build();
((HttpRequestBase) httpGet).setURI(uri);
CloseableHttpResponse response = client.execute(httpGet);
client.close();
}

Кроме того, мы можем использовать список NameValuePair для запроса HttpClient :

public CloseableHttpResponse sendHttpRequest() {
List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair("param1", "value1"));
nameValuePairs.add(new BasicNameValuePair("param2", "value2"));
HttpGet httpGet = new HttpGet("https://example.com");
URI uri = new URIBuilder(httpGet.getURI())
.addParameters(nameValuePairs)
.build();
((HttpRequestBase) httpGet).setURI(uri);
CloseableHttpResponse response = client.execute(httpGet);
client.close();
}

Точно так же UriBuilder можно использовать для добавления параметров к другим методам запроса HttpClient.

3. Добавьте параметры в запрос HttpClient , используя UrlEncodedFormEntity

Другой подход — использовать UrlEncodedFormEntity :

public CloseableHttpResponse sendHttpRequest() {
List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair("param1", "value1"));
nameValuePairs.add(new BasicNameValuePair("param2", "value2"));
HttpPost httpPost = new HttpPost("https://example.com");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, StandardCharsets.UTF_8));
CloseableHttpResponse response = client.execute(httpPost);
client.close();
}

Обратите внимание, что UrlEncodedFormEntity нельзя использовать для запросов GET , поскольку запрос GET не имеет тела, которое могло бы содержать сущность.

4. Вывод

В этом примере мы показали, как добавлять параметры в запросы HttpClient. Кроме того, реализация всех этих примеров и фрагментов кода доступна на GitHub .