Language/Java / JSP
[Java] URL 읽어오기
과일가게 개발자
2014. 8. 1. 15:12
반응형
개발을 하다보면 의도치 않게 다른 사이트의 URL 을 호출하여 해당 페이지의 내용을 읽어와야 할 경우가 있다.
특정 사이트의 URL을 파싱하여 데이터를 긁어모으는 등과 같은 방법으로도 이용할 수 있는데,
이부분은 엄연한 불법이므로 시도하지 말자.
나같은 경우 서로 다른 도메인간에 API(xml, json) 호출을 Ajax를 통해 할때 해당 방법을 이용한다.
왜 그래야 하는지는 조만간 포스팅 하도록 하겠다.
다른 도메인의 URL을 호출하는것은 java의 URL, URLConnection 객체의 사용으로 가능하다.
해당 객체를 이용하면 URL의 있는 HTML과 같은 태그 내용을 읽을 수 있는데,
리눅스에서 외부 페이지를 다운받는 wget 과 비슷하다.
wget 명령어는 해당 URL 페이지를 시스템에 문서로 다운로드 받을수 있는 반면에,
java에서는 다운로드가 아닌 BufferReader에 저장을 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLReader {
public static void main(String[] args) {
StringBuffer sbuf = new StringBuffer();
try {
// URL 객체 생성
URL url = new URL("http://www.naver.com");
// URLConnection 생성
URLConnection urlConn = url.openConnection();
InputStream is = urlConn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String str ;
while((str=br.readLine()) != null){
sbuf.append(str + "\r\n") ;
}
// 콘솔에 출력하기
System.out.println(sbuf.toString()) ;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}