Автор оригинала: Pankaj Kumar.
Apache HttpClient может использоваться для отправки HTTP-запросов из клиентского кода на сервер. В нашем последнем уроке мы увидели, как использовать HttpURLConnection для выполнения операций ПОЛУЧЕНИЯ и отправки HTTP-запросов из самой java-программы. Сегодня мы рассмотрим тот же пример проекта, но используем Apache HttpClient для выполнения операций ПОЛУЧЕНИЯ и отправки запросов.
Apache HttpClient
Для понимания деталей запроса на ПОЛУЧЕНИЕ и отправку я настоятельно рекомендую вам также взглянуть на предыдущий пример . Apache HttpClient очень широко используется для отправки HTTP-запросов из самой java-программы. Если вы используете Maven, вы можете добавить приведенные ниже зависимости, и они будут включать все другие необходимые зависимости для использования Apache HttpClient.
org.apache.httpcomponents httpclient 4.4
Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
- Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
- Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
- Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
- Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
Если вы используете какую-либо другую версию Apache HttpClient и не используете Maven, просто создайте временный проект Maven, чтобы получить список совместимых банок, как показано на рисунке ниже.
Теперь просто скопируйте банки в каталог библиотеки проекта, это избавит вас от любых проблем с совместимостью, а также сэкономит время на поиске банок и загрузке из Интернета.
Теперь, когда у нас есть все необходимые зависимости, ниже приведены шаги по использованию Apache HttpClient для отправки запросов GET и POST.
- Создайте экземпляр
CloseableHttpClient
с помощью вспомогательного классаHttp-клиентов
. - Создать
HttpGet
илиЭкземпляр HttpPost
на основе типа HTTP-запроса. - Используйте метод AddHeader для добавления необходимых заголовков, таких как User-Agent, Accept-Encoding и т. Д.
- Для ПУБЛИКАЦИИ создайте список пары
Имя Значение
и добавьте все параметры формы. Затем установите его в сущность HttpPost. - Получите
CloseableHttpResponse
, выполнив запрос HttpGet или HttpPost. - Получите из ответа необходимые сведения, такие как код состояния, информация об ошибке, html-код ответа и т.д.
- Наконец, закройте ресурс apache
HttpClient
.
Ниже приведена заключительная программа, в которой мы показываем, как использовать Apache HttpClient для выполнения HTTP-запросов GET и POST в самой программе java.
package com.journaldev.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; public class ApacheHttpClientExample { private static final String USER_AGENT = "Mozilla/5.0"; private static final String GET_URL = "https://localhost:9090/SpringMVCExample"; private static final String POST_URL = "https://localhost:9090/SpringMVCExample/home"; public static void main(String[] args) throws IOException { sendGET(); System.out.println("GET DONE"); sendPOST(); System.out.println("POST DONE"); } private static void sendGET() throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(GET_URL); httpGet.addHeader("User-Agent", USER_AGENT); CloseableHttpResponse httpResponse = httpClient.execute(httpGet); System.out.println("GET Response Status:: " + httpResponse.getStatusLine().getStatusCode()); BufferedReader reader = new BufferedReader(new InputStreamReader( httpResponse.getEntity().getContent())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = reader.readLine()) != null) { response.append(inputLine); } reader.close(); // print result System.out.println(response.toString()); httpClient.close(); } private static void sendPOST() throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(POST_URL); httpPost.addHeader("User-Agent", USER_AGENT); ListurlParameters = new ArrayList (); urlParameters.add(new BasicNameValuePair("userName", "Pankaj Kumar")); HttpEntity postParams = new UrlEncodedFormEntity(urlParameters); httpPost.setEntity(postParams); CloseableHttpResponse httpResponse = httpClient.execute(httpPost); System.out.println("POST Response Status:: " + httpResponse.getStatusLine().getStatusCode()); BufferedReader reader = new BufferedReader(new InputStreamReader( httpResponse.getEntity().getContent())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = reader.readLine()) != null) { response.append(inputLine); } reader.close(); // print result System.out.println(response.toString()); httpClient.close(); } }
Когда мы запускаем вышеуказанную программу, мы получаем аналогичный вывод html, полученный в браузере.
GET Response Status:: 200Home Hello world!
The time on the server is March 7, 2015 1:01:22 AM IST.
GET DONE POST Response Status:: 200User Home Page Hi Pankaj Kumar
POST DONE
Это все для примера Apache HttpClient, он содержит множество полезных методов, которые вы можете использовать. Поэтому я бы посоветовал вам проверить их для лучшего понимания.