Рубрики
Без рубрики

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

Узнайте, как добавлять параметры в запросы HttpClient.

Автор оригинала: Maja Joksovic.

1. введение

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

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

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

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

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

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

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

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();
}

Кроме того, мы можем пойти с парой Имя Значение список для 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 .