HttpURLConnection은 자바에서 HTTP 프로토콜을 사용하여 서버와 통신할 때 사용되는 클래스로 Java의 표준 라이브러리인 java.net 패키지에 포함되어 있습니다.
URL을 통해 서버와 연결하고 데이터를 송수신하는 데 사용됩니다.
주요 기능
- 서버와의 연결 설정: URL을 사용하여 서버에 연결하고, HTTP 요청 방법(GET, POST 등) 및 다양한 속성을 설정할 수 있습니다.
- 데이터 송수신: 서버와의 연결을 통해 데이터를 송수신할 수 있습니다.
- 응답 처리: 서버로부터 받은 응답 데이터를 처리하고 응답 코드, 응답 헤더, 응답 본문 등을 확인할 수 있습니다.
- 연결 관리: 연결을 열고 닫는 등의 연결 관리 작업을 수행할 수 있습니다.
사용 예제
아래는 간단한 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 |