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

Пример HttpClient Apache – CloseableHttpClient

Пример HttpClient Apache для запроса GET, POST в программе Java. Пример CloseableHttpClient, HttpGet, HttpPost, NameValuePair, CloseableHttpResponse

Автор оригинала: 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, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.

  1. Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
  2. Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
  3. Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.
  4. Однако, если вы не используете Maven, вам необходимо добавить следующие банки в путь сборки вашего проекта, чтобы он работал.

Если вы используете какую-либо другую версию Apache HttpClient и не используете Maven, просто создайте временный проект Maven, чтобы получить список совместимых банок, как показано на рисунке ниже.

Теперь просто скопируйте банки в каталог библиотеки проекта, это избавит вас от любых проблем с совместимостью, а также сэкономит время на поиске банок и загрузке из Интернета.

Теперь, когда у нас есть все необходимые зависимости, ниже приведены шаги по использованию Apache HttpClient для отправки запросов GET и POST.

  1. Создайте экземпляр CloseableHttpClient с помощью вспомогательного класса Http-клиентов .
  2. Создать HttpGet или Экземпляр HttpPost на основе типа HTTP-запроса.
  3. Используйте метод AddHeader для добавления необходимых заголовков, таких как User-Agent, Accept-Encoding и т. Д.
  4. Для ПУБЛИКАЦИИ создайте список пары Имя Значение и добавьте все параметры формы. Затем установите его в сущность HttpPost.
  5. Получите CloseableHttpResponse , выполнив запрос HttpGet или HttpPost.
  6. Получите из ответа необходимые сведения, такие как код состояния, информация об ошибке, html-код ответа и т.д.
  7. Наконец, закройте ресурс 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);

		List urlParameters = 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:: 200
	Home

Hello world!

The time on the server is March 7, 2015 1:01:22 AM IST.

GET DONE POST Response Status:: 200 User Home Page

Hi Pankaj Kumar

POST DONE

Это все для примера Apache HttpClient, он содержит множество полезных методов, которые вы можете использовать. Поэтому я бы посоветовал вам проверить их для лучшего понимания.