(Java 17): Oracle Java 17 URLConnectionDocumentation
URL
이 주소를 정의한다면, URLConnection
은 실제로 해당 주소로 연결하고 데이터를 송수신할 수 있는 통로를 마련합니다.URLConnection
을 통해 웹의 자원에 접근하여 데이터를 가져오거나, 서버에 데이터를 보낼 수 있어 네트워크를 통한 데이터 전송을 직관적으로 처리할 수 있습니다.URLConnection
클래스는 특정 URL과 연결된 서버에 접근하여 해당 자원을 열고, HTTP 요청과 응답 처리를 포함한 다양한 통신 작업을 수행할 수 있습니다.URLConnection
은 추상 클래스이므로 직접 객체를 생성할 수 없으며, URL
객체의 openConnection()
메서드를 통해 URLConnection
객체를 생성합니다.getInputStream()
이나 getOutputStream()
을 호출하면 자동으로 연결이 열립니다.import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionEx01 {
public static void main(String[] args) {
try {
// URL을 통해 URLConnection 객체 생성
URLConnection con = new URL("http://www.google.com").openConnection();
// URL의 콘텐츠 가져오기
System.out.println("Content: " + con.getContent());
// URL의 콘텐츠 유형 가져오기 (예: text/html)
System.out.println("Content Type: " + con.getContentType());
} catch (IOException e) {
// IOException 예외 발생 시 에러 메시지 출력
System.out.println("[에러] " + e.getMessage());
}
}
}
package com.exam;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class UrlConnectionEx02 {
public static void main(String[] args) {
BufferedReader br = null;
try {
URLConnection conn = new URL("https://m.daum.net").openConnection();
br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("[애러]" + e.getMessage());
} finally {
if (br != null) {try {br.close();} catch (IOException e) {}
}
}
}}
package com.exam;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionEx03 {
public static void main(String[] args) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
// URL을 통해 URLConnection 객체 생성
URLConnection con = new URL("https://t1.daumcdn.net/news/202411/01/xportsnews/20241101112629269njkd.jpg").openConnection();
// 외부연결에서 가져오는 입력 이미지
bis = new BufferedInputStream(con.getInputStream());
// 파일로 쓸 이미지
bos = new BufferedOutputStream(new FileOutputStream("./gallery.jpg"));
int data = 0;
while ((data = bis.read()) != -1) {
bos.write(data);
}
} catch (IOException e) {
// IOException 예외 발생 시 에러 메시지 출력
System.out.println("[에러] " + e.getMessage());
} finally {
if (bis != null) { try { bis.close(); } catch (IOException e) {}}
if (bos != null) { try { bos.close(); } catch (IOException e) {}}
}
}
}
영화진흥위원회 오픈API에서 영화제목 가져오기
package com.exam;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionEx04 {
public static void main(String[] args) {
BufferedReader br = null;
try {
// URL을 통해 URLConnection 객체 생성
URLConnection con = new URL("http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.xml?key=발급키&targetDt=20241026").openConnection();
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
// 데이터가 한 줄로 가져온다.
String data = br.readLine().replaceAll("><", ">\n<");
// XML 데이터를 태그 기준으로 나눈다.
String[] lines = data.split("\n");
// 영화제목 태그만 추출
for (String line : lines) {
if (line.trim().startsWith("<movieNm>")) {
System.out.println(line.trim());
}
}
} catch (IOException e) {
// IOException 예외 발생 시 에러 메시지 출력
System.out.println("[에러] " + e.getMessage());
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
}
}
}
}
}
XML(Extensible Markup Language)은 웹에서 데이터를 사용하기 위한 범용 언어입니다. XML을 통하여 개발자는 매우 다양한 응용 프로그램으로부터 구조화된 데이터를 로컬 컴퓨팅 및 프레젠테이션을 위해 데스크톱으로 전달할 수 있습니다. XML을 사용하여 특정 응용 프로그램에 대한 독특한 데이터 형식을 만들 수 있습니다. 또한 XML은 서버 간에 구조화된 데이터의 전송을 위한 이상적인 형식입니다.