Java HttpURLConnection을 사용한 HTTP GET 및 POST 요청 방법

소개

java.net 패키지의 HttpURLConnection 클래스를 사용하여 Java HTTP 요청을 프로그래밍적으로 보낼 수 있습니다. 이 기사에서는 Java 프로그램에서 HttpURLConnection을 사용하여 GETPOST 요청을 보내고 응답을 출력하는 방법을 배우게 됩니다.

필수 조건

HttpURLConnection 예제를 위해서는 Spring MVC 튜토리얼을 완료했어야 합니다. 왜냐하면 이 튜토리얼에는 GETPOST HTTP 메서드에 대한 URL이 포함되어 있습니다.

localhost Tomcat 서버에 배포하는 것을 고려해보세요.

SpringMVCExample 요약

Java HTTP GET 요청

  • localhost:8080/SpringMVCExample/

로그인 페이지에 대한 Java HTTP GET 요청

  • localhost:8080/SpringMVCExample/login

Java HTTP POST 요청

  • localhost:8080/SpringMVCExample?userName=Pankaj
  • localhost:8080/SpringMVCExample/login?userName=Pankaj&pwd=apple123 – 여러 매개변수를 위한 것

양식에서 매개변수 추출하기

로그인 페이지의 HTML에는 다음과 같은 양식이 포함되어 있습니다:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="home" method="post">
<input type="text" name="userName"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
  • methodPOST입니다.
  • actionhome입니다.
    • localhost:8080/SpringMVCExample/home
  • userNametext 유형입니다.

POST 요청을 구성할 수 있습니다:

localhost:8080/SpringMVCExample/home?userName=Pankaj

이것은 HttpURLConnection 예제의 기초로 제공됩니다.

HttpURLConnection 예제

HttpURLConnection 클래스를 사용하여 Java HTTP 요청을 보내는 단계는 다음과 같습니다:

  1. GET 또는 POST URL 문자열에서 URL 객체를 만듭니다.
  2. openConnection() 메서드를 호출하여 HttpURLConnection의 인스턴스를 반환하는 URL 객체에 대한 openConnection() 메서드를 호출합니다.
  3. HttpURLConnection 인스턴스에서 요청 메서드를 설정하십시오 (기본값은 GET입니다).
  4. HttpURLConnection 인스턴스에서 "User-Agent", "Accept-Language" 등과 같은 요청 헤더 값을 설정하려면 setRequestProperty() 메서드를 호출하십시오.
  5. getResponseCode()를 호출하여 응답 HTTP 코드를 가져올 수 있습니다. 이렇게 함으로써 요청이 성공적으로 처리되었는지 또는 HTTP 오류 메시지가 발생했는지 알 수 있습니다.
  6. GET의 경우 ReaderInputStream을 사용하여 응답을 읽고 그에 따라 처리하십시오.
  7. POST의 경우 코드가 응답을 처리하기 전에 HttpURLConnection 인스턴스에서 OutputStream을 가져와서 POST 매개변수를 작성해야 합니다.

다음은 Java GETPOST 요청을 보내는 HttpURLConnection을 사용하는 예제 프로그램입니다:

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) { // 성공
			BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
			String inputLine;
			StringBuffer response = new StringBuffer();

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

			// 결과 출력
			System.out.println(response.toString());
		} else {
			System.out.println("GET request did not work.");
		}

	}

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

		// POST 전용 - 시작
		con.setDoOutput(true);
		OutputStream os = con.getOutputStream();
		os.write(POST_PARAMS.getBytes());
		os.flush();
		os.close();
		// POST 전용 - 끝

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

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

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

			// 결과 출력
			System.out.println(response.toString());
		} else {
			System.out.println("POST request did not work.");
		}
	}

}

코드를 컴파일하고 실행하십시오. 다음 출력이 생성됩니다:

Output
GET Response Code :: 200 <html><head> <title>Home</title></head><body><h1> Hello world! </h1><P> The time on the server is March 6, 2015 9:31:04 PM IST. </P></body></html> GET DONE POST Response Code :: 200 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>User Home Page</title></head><body><h3>Hi Pankaj</h3></body></html> POST DONE

이 출력을 브라우저 HTTP 응답과 비교하십시오.

만약 HTTPS 프로토콜을 통해 GETPOST 요청을 보내야 한다면, java.net.HttpURLConnection 대신 javax.net.ssl.HttpsURLConnection을 사용해야 합니다. HttpsURLConnection은 SSL 핸드셰이크와 암호화를 처리할 것입니다.

결론

이 글에서는 Java 프로그램에서 HttpURLConnection을 사용하여 GETPOST 요청을 보내고 응답을 출력하는 방법을 배웠습니다.

더 많은 Java 튜토리얼로 학습을 계속하세요.

Source:
https://www.digitalocean.com/community/tutorials/java-httpurlconnection-example-java-http-request-get-post