예를 들어 http://opentutorials.org:3000/main?id=HTML&page=12 라고 되어있는 주소가 있다.
여기서 http://opentutorials.org:3000/main 여기까지는 URL이고(URI이기도 한)http://opentutorials.org:3000/main?id=HTML&page=12 이 것은 URI라고 할 수 있다. (URL은 아닌)
이유는 URL은 자원의 위치를 나타내 주는 것이고 URI는 자원의 식별자인데?id=HTML&page=12 이 부분은 위치를 나타내는 것이 아니라 id값이 HTML이고 page가 12인 것을 나타내주는 식별하는 부분이기 때문이다.
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressTest {
public static void main(String[] args) throws UnknownHostException {
// 네이버 사이트의 IP주소 가져오기
InetAddress naverIp = InetAddress.getByName("www.naver.com");
System.out.println("Host Name = "+ naverIp.getHostName());
System.out.println("Host Address = "+ naverIp.getHostAddress());
System.out.println();
// 자기자신 컴퓨터의 IP정보 가져오기
InetAddress localIp = InetAddress.getLocalHost();
System.out.println("내 컴퓨터의 HostName = "+localIp.getHostName());
System.out.println("내 컴퓨터의 HostAddress = "+localIp.getHostAddress());
System.out.println();
// IP주소가 여러개인 호스트의 정보 가져오기
InetAddress[] naverIps = InetAddress.getAllByName("www.naver.com");
for(InetAddress iAddr : naverIps) {
System.out.println(iAddr);
}
}
}
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
public class urlTest {
public static void main(String[] args) throws MalformedURLException, URISyntaxException {
// url클래스 => 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 주소를 관리하는 클래스
URL url = new URL("http","ddit.or.kr",80,"/main/index.html?ttt=123#kkk");
// URL url = new URL("http://ddit.or.kr:80/main/index.html?ttt=123#kkk");
System.out.println("전체 URL주소: "+url.toString());
System.out.println("protocol: "+url.getProtocol());
System.out.println("host: "+url.getHost());
System.out.println("query: "+url.getQuery());
System.out.println("file: "+url.getFile()); //쿼리정보포함
System.out.println("path: "+url.getPath()); //쿼리정보미포함
System.out.println("port: "+url.getPort());
System.out.println("ref: "+url.getRef());
System.out.println();
System.out.println(url.toExternalForm());
System.out.println(url.toString());
System.out.println(url.toURI().toString());
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class URLConnectionTest {
public static void main(String[] args) throws IOException {
// URLConnection => 애플리케이션과 URL간의 통신연결을 위한 추상클래스
// 특정서버(예: naver서버)의 정보와 파일내용을 출력하는 예제
URL url = new URL("https://www.naver.com/index.html");
// Header 정보 가져오기
// URLConnection객체 구하기
URLConnection urlConn = url.openConnection();
System.out.println("Content-Type : "+urlConn.getContentType());
System.out.println("Encoding : "+urlConn.getContentEncoding());
System.out.println("Content : "+urlConn.getContent());
System.out.println();
// 전체 Header정보 출력하기
Map<String, List<String>> headerMap = urlConn.getHeaderFields();
Iterator<String> it = headerMap.keySet().iterator();
while(it.hasNext()) {
String key = it.next();
System.out.println(key+" : "+headerMap.get(key));
}
System.out.println("-----------------------------------------");
// 해당호스트의 페이지내용 가져오기
// InputStreamReader isr = new InputStreamReader((InputStream)urlConn.getContent());
// InputStreamReader isr = new InputStreamReader(url.openStream());
InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream());
BufferedReader br = new BufferedReader(isr);
// 내용 출력하기
String str = "";
while((str = br.readLine()) != null) {
System.out.println(str);
}
// 스트림 닫기
br.close();
}
}