본문 바로가기
Java

java.net.HttpURLConnection

by Mecodata 2023. 12. 19.

정의

- java.net.HttpURLConnection = Java에서 URL 요청을 위한 클래스

- 데이터의 타입 및 길이 제한 거의 X → 데이터의 길이를 예상하기 어려운 스트리밍 데이터를 교환할 때 주로 사용

서버가 연결을 종료하기 전에 동일한 클라이언트에서 다시 연결할 경우 기존에 연결된 소켓을 재사용

 

주요 메소드

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 HttpPostExample {
    public static void main(String[] args) throws IOException {
        // 서버 URL 설정
        String serverUrl = "http://example.com/api/post-endpoint";

        // POST 요청할 데이터
        String postData = "key1=value1&key2=value2";

        // URL 객체 생성
        URL url = new URL(serverUrl);

        // HttpURLConnection 객체 생성
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        try {
            // HTTP 요청 메소드 설정
            conn.setRequestMethod("POST");

            // OutputStream을 이용하여 데이터를 서버에 전송
            conn.setDoOutput(true); // 데이터를 서버에 전송하겠다고 설정
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(postData.getBytes("UTF-8"));
            outputStream.flush();
            outputStream.close();

            // 응답 코드 확인
            int responseCode = conn.getResponseCode();
            System.out.println("HTTP 응답 코드: " + responseCode);

            // 응답 데이터 읽기
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            StringBuilder sb = new StringBuilder();

            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }

            reader.close();

            // 응답 데이터 출력
            System.out.println("서버 응답 데이터: " + sb.toString());
        } finally {
            // 연결 종료
            connection.disconnect();
        }
    }
}

 

disconnect() = 연결 종료

 

- setRequestMethod() = HTTP Method 설정 (HttpURLConnection은 기본적으로 GET을 사용)

- setRequestProperty(key, value) = HTTP 요청 헤더 설정 (Content-type, Cookie 등)     

- setDoOutput(true/false) = 서버로 데이터를 전송할 지에 대한 여부 설정 

 

- getHeaderField() = HTTP 응답 헤더 조회

- getInputStream(), getOutputStream() = 입/출력 스트림 획득

- getResponseCode(), getResponseMessage() = 서버로부터 응답 코드/메시지 획득

 

'Java' 카테고리의 다른 글

java.io.File  (0) 2023.12.20
java.io.InputStream & OutputStream  (0) 2023.12.20
java.io.Reader & Writer  (0) 2023.12.20
java.util.Properties  (0) 2023.12.19
BufferedReader/BufferedWriter  (0) 2023.12.19

댓글