URL(Uniform Resource Location)
- 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소
URL 클래스
- 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소를 다루는 클래스
ex. http://www.ddit.or.kr:80/index.html?ttt=123
public class URLTest01 {
public static void main(String[] args) throws MalformedURLException {
// URL 클래스: 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소를 다루는 클래스
// http://www.ddit.or.kr:80/index.html?ttt=123
URL url = new URL("http", "www.ddit.or.kr", 80, "index.html?ttt=123");
System.out.println("Protocol : "+ url.getProtocol());
System.out.println("Host: "+ url.getHost());
System.out.println("Port: "+ url.getPort());
System.out.println("File: "+ url.getFile()); // 파일이름+쿼리string
System.out.println("Path: "+ url.getPath()); // 파일이름까지
System.out.println("Query: "+ url.getQuery()); //쿼리string
System.out.println();
System.out.println(url.toExternalForm());
}
}
URLConnection
- 애플리케이션과 url간의 통신 연결을 위한 클래스
특정 서버의 정보와 파일 내용을 가져와 출력하는 예제
public static void main(String[] args) throws IOException {
// URLConnection : 애플리케이션과 url간의 통신 연결을 위한 클래스
// 특정 서버의 정보와 파일 내용을 가져와 출력하는 예제
URL url = new URL("https://www.naver.com");
URLConnection urlCon = url.openConnection();
Map<String, List<String>> headerMap = urlCon.getHeaderFields();
for(String headerKey: headerMap.keySet()){
System.out.println(headerKey+":"+headerMap.get(headerKey));
}
System.out.println();
}
index.html문서 내용 가져오기
- 방법1) URLConnection객체를 이용하는 방법
public static void main(String[] args) throws IOException {
// 해당 문서의 내용을 가져와 화면에 출력하기
// (index.html문서 내용 가져오기)
방법1) URLConnection객체를 이용하는 방법
// 파일을 읽어오기 위한 스트림 객체를 생성
InputStream is = urlCon.getInputStream(); // 파일을 읽어온다 =입력받는다.
InputStreamReader isr = new InputStreamReader(is, "utf-8"); //byte기반을 문자기반으로 변환
BufferedReader br = new BufferedReader(isr);
// 자료를 읽어와서 출력하기
while(true){
String str = br.readLine(); // InputStreamReader 한줄씩 읽기
if(str==null){ // 더이상 읽어올 데이터가 없으면
break;
}
System.out.println(str);
}
br.close(); //스트림 닫기
}
index.html문서 내용 가져오기
- 방법2) URL객체를 이용해서 스트림 객체를 구한다.
public static void main(String[] args) throws IOException {
// URL객체의 oepnStream()메서드 이용
InputStream is2 = url.openStream(); //openStreamdms: url 객체의 InputStream구해줌
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2, "utf-8"));
while(true){
String str = br2.readLine(); // InputStreamReader 한줄씩 읽기
if(str==null){ // 더이상 읽어올 데이터가 없으면
break;
}
System.out.println(str);
}