HTTP GET 및 POST 요청에 Java HttpURLConnection을 사용하는 방법
소개
java.net
패키지의 HttpURLConnection
클래스를 사용하여 프로그래밍 방식으로 Java HTTP 요청을 보낼 수 있습니다. 이 기사에서는 Java 프로그램에서 HttpURLConnection
을 사용하여 GET
및 POST
요청을 보낸 다음 응답을 인쇄하는 방법을 배웁니다.
전제 조건
이 HttpURLConnection
예제의 경우 GET
및 POST
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
입니다.액션
은홈
입니다.\nlocalhost:8080/SpringMVCExample/home
다음에 대한
POST
요청을 구성할 수 있습니다.localhost:8080/SpringMVCExample/home?userName=Pankaj
이것은
HttpURLConnection
예제의 기초 역할을 합니다.HttpURL연결 예
다음은
HttpURLConnection
클래스를 사용하여 Java HTTP 요청을 보내는 단계입니다.GET
또는POST
URL 문자열에서URL
개체를 만듭니다.HttpURLConnection
의 인스턴스를 반환하는 URL 개체에서openConnection()
메서드를 호출합니다.HttpURLConnection
인스턴스에서 요청 방법을 설정합니다(기본값은GET
임).HttpURLConnection
인스턴스에서setRequestProperty()
메서드를 호출하여 요청 헤더 값(예:\User-Agent\
,\ Accept-Language
등).getResponseCode()
를 호출하여 응답 HTTP 코드를 얻을 수 있습니다. 이렇게 하면 요청이 성공적으로 처리되었는지 또는 발생한 HTTP 오류 메시지가 있는지 알 수 있습니다.GET
의 경우Reader
및InputStream
을 사용하여 응답을 읽고 그에 따라 처리합니다.POST
의 경우 코드가 응답을 처리하기 전에HttpURLConnection
인스턴스에서OutputStream
을 가져와POST를 작성해야 합니다.
매개변수를 삽입합니다.
다음은
HttpURLConnection
을 사용하여 JavaGET
및POST
요청을 보내는 예제 프로그램입니다.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."); } } }
코드를 컴파일하고 실행합니다. 다음과 같은 출력이 생성됩니다.
OutputGET 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 프로토콜을 통해
GET
및POST
요청을 보내야 하는 경우대신
.javax.net.ssl.HttpsURLConnection
을 사용해야 합니다. >java.net.HttpURLConnectionHttpsURLConnection
은 SSL 핸드셰이크 및 암호화를 처리합니다.결론
이 기사에서는 Java 프로그램에서
HttpURLConnection
을 사용하여GET
및POST
요청을 보낸 다음 응답을 인쇄하는 방법을 배웠습니다.더 많은 Java 자습서로 학습을 계속하십시오.