Java
[Java] URL, HttpURLConnection
가영리
2024. 10. 28. 13:45
URL (Unionform Resource Locator)
웹 리소스를 식별하고, Java에서 URL을 통해 파일이나 데이터에 접근할 수 있도록 경로를 제공한다.
URL 객체를 통해 URL의 구성 요소(프로토콜, 호스트명, 포트, 경로 등)를 얻을 수 있다.
URL url = new URL("<https://example.com:8080/path/to/resource?query=1>");
System.out.println("Protocol: " + url.getProtocol()); // https
System.out.println("Host: " + url.getHost()); // example.com
System.out.println("Port: " + url.getPort()); // 8080
System.out.println("Path: " + url.getPath()); // /path/to/resource
System.out.println("Query: " + url.getQuery()); // query=1
HttpURLConnection
HTTP(S) 프로토콜을 통해 서버와 통신하기 위한 클래스로 URLConnection을 상속받는다.
이 클래스는 새 인스턴스를 직접 만들지 못하고, URL.openConnection()을 통해 URL객체에서 HttpURLConnection 인스턴스를 생성할 수 있다.
protected HttpURLConnection (URL u) {
super(u);
}
protected URLConnection(URL url) {
this.url = url;
if (url == null) {
this.useCaches = defaultUseCaches;
} else {
this.useCaches = getDefaultUseCaches(url.getProtocol());
}
}
이를 사용하여 HTTP 요청을 구성하고 서버에 전송하며, 서버 응답을 받을 수 있다.
주요 메서드
- setRequestMethod(String method): 요청 메서드 지정 (GET, POST 등).
- setRequestProperty(String key, String value): 요청 헤더 설정.
- getResponseCode(): 서버 응답 코드 확인.
- getInputStream(), getOutputStream(): 서버와 데이터를 주고받는 스트림 연결.
URL url = new URL("<https://api.example.com/data>");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer token");
// 서버 응답 코드 확인
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
System.out.println(content.toString());
} else {
System.out.println("Request failed with code: " + responseCode);
}
conn.disconnect();