웹사이트 검색

HTTP GET 및 POST 요청에 Java HttpURLConnection을 사용하는 방법


소개

java.net 패키지의 HttpURLConnection 클래스를 사용하여 프로그래밍 방식으로 Java HTTP 요청을 보낼 수 있습니다. 이 기사에서는 Java 프로그램에서 HttpURLConnection을 사용하여 GETPOST 요청을 보낸 다음 응답을 인쇄하는 방법을 배웁니다.

전제 조건

HttpURLConnection 예제의 경우 GETPOST HTTP 메서드에 대한 URL이 있으므로 Spring MVC 자습서를 완료해야 합니다.

localhost Tomcat 서버에 배포하는 것을 고려하십시오.

SpringMVC예제 요약

자바 HTTP GET 요청

  • localhost:8080/SpringMVCExample/

Java HTTP GET 로그인 요청 페이지

  • localhost:8080/SpringMVCExample/로그인

자바 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>

  • 방법POST입니다.
  • 액션입니다.\n
    • localhost:8080/SpringMVCExample/home

    다음에 대한 POST 요청을 구성할 수 있습니다.

    localhost:8080/SpringMVCExample/home?userName=Pankaj
    

    이것은 HttpURLConnection 예제의 기초 역할을 합니다.

    HttpURL연결 예

    다음은 HttpURLConnection 클래스를 사용하여 Java HTTP 요청을 보내는 단계입니다.

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

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

    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 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);
    
    		// 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 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 요청을 보내야 하는 경우 대신 javax.net.ssl.HttpsURLConnection을 사용해야 합니다. >java.net.HttpURLConnection. HttpsURLConnection은 SSL 핸드셰이크 및 암호화를 처리합니다.

    결론

    이 기사에서는 Java 프로그램에서 HttpURLConnection을 사용하여 GETPOST 요청을 보낸 다음 응답을 인쇄하는 방법을 배웠습니다.

    더 많은 Java 자습서로 학습을 계속하십시오.