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

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

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

Задача: Сумма двух

Дано массив целых чисел и целая сумма. Нужно найти индексы двух чисел, сумма которых равна заданной ...

ANDROMEDA

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 .