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

Пример подключения Java HttpURLConnection – Java HTTP – запрос GET, POST

Пример Java HttpURLConnection – Отправьте Java HTTP – запрос GET, ОТПРАВЬТЕ запрос с использованием класса java.net.HttpURLConnection и получите ответ на печать.

Автор оригинала: Pankaj Kumar.

HttpURLConnection класс из java.net пакет можно использовать для отправки HTTP-запроса Java программным способом. Сегодня мы узнаем, как использовать HttpURLConnection в java-программе для отправки ПОЛУЧЕНИЯ и ОТПРАВКИ запросов, а затем печати ответа.

HTTP-запрос Java

Для нашего примера HttpURLConnection я использую пример проекта из учебника Spring MVC, потому что в нем есть URL-адреса для методов GET и POST HTTP. Ниже приведены изображения этого веб-приложения, я развернул его на своем локальном сервере tomcat.

Запрос Java HTTP GET

Java HTTP-запрос на получение страницы входа

Запрос Java HTTP POST

Для запросов Java HTTP GET у нас есть вся информация в самом URL-адресе браузера. Итак, из приведенных выше изображений мы знаем, что у нас есть следующие URL-адреса запросов на получение.

  • https://localhost:9090/SpringMVCExample/
  • https://localhost:9090/SpringMVCExample/login

Приведенные выше URL-адреса не имеют никаких параметров, но, как мы знаем, в HTTP-запросах GET параметры являются частью самого URL-адреса, поэтому, например, если нам нужно отправить параметр с именем Имя пользователя со значением Pankaj , то URL-адреса были бы такими, как показано ниже.

  • https://localhost:9090/SpringMVCExample?userName=Pankaj
  • https://localhost:9090/SpringMVCExample/login?userName=Pankaj&pwd=apple123 – для нескольких параметров

Если мы знаем URL-адрес ПУБЛИКАЦИИ и какие параметры она ожидает, это потрясающе, но в этом случае мы выясним это из источника формы входа.

Ниже приведен HTML-код, который мы получаем при просмотре источника страницы входа в систему в любом из браузеров.






Login Page



Посмотрите на метод формы в источнике, как и ожидалось, это метод POST. Теперь посмотрите, что действие “домой”, поэтому URL-адрес СООБЩЕНИЯ будет https://localhost:9090/SpringMVCExample/home . Теперь проверьте различные элементы в форме, из приведенной выше формы мы можем сделать вывод, что нам нужно отправить один параметр POST с именем Имя пользователя и он имеет тип String.

Итак, теперь у нас есть полная информация о запросах GET и POST, и мы можем приступить к программе примера HTTP-запроса Java.

Ниже приведены шаги, которые нам необходимо выполнить для отправки HTTP-запросов Java с помощью HttpURLConnection класс.

  1. Создайте URL объект из строки URL-адреса GET/POST.
  2. Вызовите метод openConnection() для объекта URL, который возвращает экземпляр HttpURLConnection
  3. Задайте метод запроса в HttpURLConnection экземпляр, значение по умолчанию-GET.
  4. Вызовите метод setRequestProperty() на Экземпляр HttpURLConnection для установки значений заголовка запроса, таких как “Агент пользователя” и “Язык принятия” и т.д.
  5. Мы можем вызвать getResponseCode () , чтобы получить HTTP-код ответа. Таким образом, мы узнаем, был ли запрос успешно обработан или было выдано какое-либо сообщение об ошибке HTTP.
  6. Забудьте, мы можем просто использовать Reader и InputStream, чтобы прочитать ответ и обработать его соответствующим образом.
  7. Для СООБЩЕНИЯ, прежде чем мы прочитаем ответ, нам нужно получить поток вывода из Экземпляр HttpURLConnection и запишите в него параметры POST.

Пример подключения HttpURLConnection

На основе вышеуказанных шагов ниже приведен пример программы, демонстрирующей использование HttpURLConnection для отправки запросов Java GET и POST.

HttpURLConnectionExample.java код:

package com.journaldev.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpURLConnectionExample {

	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";

	private static final String POST_PARAMS = "userName=Pankaj";

	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 {
		URL obj = new URL(GET_URL);
		HttpURLConnection con = (HttpURLConnection) obj.openConnection();
		con.setRequestMethod("GET");
		con.setRequestProperty("User-Agent", USER_AGENT);
		int responseCode = con.getResponseCode();
		System.out.println("GET Response Code :: " + responseCode);
		if (responseCode == HttpURLConnection.HTTP_OK) { // success
			BufferedReader in = new BufferedReader(new InputStreamReader(
					con.getInputStream()));
			String inputLine;
			StringBuffer response = new StringBuffer();

			while ((inputLine = in.readLine()) != null) {
				response.append(inputLine);
			}
			in.close();

			// print result
			System.out.println(response.toString());
		} else {
			System.out.println("GET request not worked");
		}

	}

	private static void sendPOST() throws IOException {
		URL obj = new URL(POST_URL);
		HttpURLConnection con = (HttpURLConnection) obj.openConnection();
		con.setRequestMethod("POST");
		con.setRequestProperty("User-Agent", USER_AGENT);

		// For POST only - START
		con.setDoOutput(true);
		OutputStream os = con.getOutputStream();
		os.write(POST_PARAMS.getBytes());
		os.flush();
		os.close();
		// For POST only - END

		int responseCode = con.getResponseCode();
		System.out.println("POST Response Code :: " + responseCode);

		if (responseCode == HttpURLConnection.HTTP_OK) { //success
			BufferedReader in = new BufferedReader(new InputStreamReader(
					con.getInputStream()));
			String inputLine;
			StringBuffer response = new StringBuffer();

			while ((inputLine = in.readLine()) != null) {
				response.append(inputLine);
			}
			in.close();

			// print result
			System.out.println(response.toString());
		} else {
			System.out.println("POST request not worked");
		}
	}

}

Когда мы выполняем вышеуказанную программу, мы получаем ответ ниже.

GET Response Code :: 200
	Home

Hello world!

The time on the server is March 6, 2015 9:31:04 PM IST.

GET DONE POST Response Code :: 200 User Home Page

Hi Pankaj

POST DONE

Просто сравните его с HTTP-ответом браузера, и вы увидите, что он такой же. Вы также можете сохранить ответ в любой HTML-файл и открыть его, чтобы визуально сравнить ответы.

Быстрый совет : Если вам нужно отправлять запросы GET/POST по протоколу HTTPS, все, что вам нужно, это использовать javax.net.ssl.HttpsURLConnection вместо java.net.HttpURLConnection . В остальном все шаги будут такими же, как и выше, HttpsURLConnection позаботится о SSL-квитировании и шифровании.