Автор оригинала: 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¶m2=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 .