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¶m2=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 .