Backend/JAVA

HttpURLConnection

dddzr 2024. 6. 7. 15:57

HttpURLConnection은 자바에서 HTTP 프로토콜을 사용하여 서버와 통신할 때 사용되는 클래스로  Java의 표준 라이브러리인 java.net 패키지에 포함되어 있습니다.

URL을 통해 서버와 연결하고 데이터를 송수신하는 데 사용됩니다.

 

주요 기능

  1. 서버와의 연결 설정: URL을 사용하여 서버에 연결하고, HTTP 요청 방법(GET, POST 등) 및 다양한 속성을 설정할 수 있습니다.
  2. 데이터 송수신: 서버와의 연결을 통해 데이터를 송수신할 수 있습니다. 
  3. 응답 처리: 서버로부터 받은 응답 데이터를 처리하고 응답 코드, 응답 헤더, 응답 본문 등을 확인할 수 있습니다.
  4. 연결 관리: 연결을 열고 닫는 등의 연결 관리 작업을 수행할 수 있습니다.

 

사용 예제

아래는 간단한 HttpURLConnection을 사용한 예제 코드입니다. 이 코드는 URL을 통해 서버에 GET 요청을 보내고 응답을 받아오는 예제입니다.

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

public class HttpURLConnectionExample {

    public static void main(String[] args) throws IOException {
        // 1. 요청을 보낼 URL
        URL url = new URL("http://example.com/api/data");

        // 2. HttpURLConnection 객체 생성
         //openConnection() 메서드는 단순히 연결을 열고 HttpURLConnection 객체를 반환함
        HttpURLConnection con = (HttpURLConnection) url.openConnection();

        // 3. 요청 방법 설정
        con.setRequestMethod("GET");
        
        //3-1. 기타 설정 가능 정보
        	// 연결 시도 및 읽기 타임아웃 설정 (단위:밀리초)
        con.setConnectTimeout(10000); // 10초
        con.setReadTimeout(10000);

        	// 헤더 설정
        con.setRequestProperty("Content-Type", "application/json");
        con.setRequestProperty("Authorization", "Bearer token123");

        	// 캐시 사용 여부
        con.setUseCaches(false);

        	// 리다이렉션 설정
        con.setInstanceFollowRedirects(true);

        // 4. 연결
        con.connect();

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

        // 6. 응답 데이터 읽기
        	//서버에 요청을 보내고 응답을 받아오는 InputStream 생성
        	//BufferedReader사용하여 응답을 읽음
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        	// 응답 출력
        System.out.println("응답 내용: " + response.toString());

        // 7. 연결 닫기
        con.disconnect();
    }
}

 

'Backend > JAVA' 카테고리의 다른 글

블록킹큐(Blocking Queue)  (0) 2024.06.05
Callable, Runnable, Future  (0) 2024.06.05
스레드 풀(Thread Pool), Executor  (0) 2024.06.05
[Java] java.lang 패키지의 System  (0) 2023.10.12
JAVA에서 html 다루기 (Jsoup)  (0) 2023.08.16