2009. 12. 22. 20:58 java
URL 컨텐츠 얻어 오는 소스 테스트
해당 주소의 모든 컨텐츠를 String으로 얻어오는 소스
나중에 고쳐라.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.CookieHandler;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.junit.Test;
public class UrlTest {
// private static Log log = LogFactory.getLog(UrlTest.class);
@Test
public void getContent() throws Exception {
getURL("http://java.sun.com", "utf-8", true);
}
private String getURL(String surl, String ENCODING, boolean isGetHeader) throws Exception{
String Header = "";
String Cookie = "";
String ret = "";
String param = "";
try {
URL url = new URL(surl);
URLConnection urlC = url.openConnection();
urlC.setUseCaches(false);
urlC.setDoOutput(true);
urlC.setRequestProperty("Cookie", Cookie);
if(!param.equals("")) {
OutputStream outStream = urlC.getOutputStream();
Writer writer = new OutputStreamWriter(outStream);
writer.write(param);
}
urlC.connect();
InputStreamReader isr = null;
BufferedReader br = null;
String temp;
StringBuffer buffer = new StringBuffer();
try {
isr = new InputStreamReader(urlC.getInputStream(), ENCODING);
br = new BufferedReader(isr);
while((temp = br.readLine()) != null) {
//System.out.println(temp);
buffer.append(temp);
}
br.close();
isr.close();
Header = "";
if(isGetHeader) {
Header = getHeader(urlC, Header);
}
ret = buffer.toString();
} catch(IOException e) {
ret = "fail.." + e;
}
} catch(IOException e) {
ret = "fail." + e;
}
//System.out.println(ret);
return(ret);
}
private String getHeader(URLConnection urlC, String Header) {
Map map = urlC.getHeaderFields();
System.out.println(map);
int n = 0;
String field = "a";
while(field != null && !field.equals("")) {
field= urlC.getHeaderField(n);
Header += urlC.getHeaderFieldKey(n)+"="+field+"\n";
n++;
}
/*
* HTTP 헤더 정보는 다음과 같은 형태로 얻을수 있다.
* null=HTTP/1.1 200 OK
* Date=Sun, 27 Jul 2008 08:21:29 GMT
* Server=Microsoft-IIS/6.0
* X-Powered-By=ASP.NET
* Content-Length=6
* Content-Type=text/html
* Set-Cookie=NAME=NAME2=VALUE2&NAME1=VALUE1; path=/
* Set-Cookie=ASPSESSIONIDQCQCSQDD=GMPNAABCMELOFMCPFPCJOOHG; path=/
* Cache-control=private
* null=null
*/
System.out.println(Header);
return Header;
}
private String retrieveCookie(URL url) throws Exception {
String cookieValue = null;
CookieHandler handler = CookieHandler.getDefault();
if (handler != null) {
Map headers = handler.get(url.toURI(), new HashMap());
List values = (List)headers.get("Cookie");
for (Iterator iter=values.iterator(); iter.hasNext();) {
String v = (String)iter.next();
if (cookieValue == null)
cookieValue = v;
else
cookieValue = cookieValue + ";" + v;
}
}
System.out.println(cookieValue);
return cookieValue;
}
}
쿠키 관련은 다음 사이트 참조를 참조 할것
http://programmers.tistory.com/204
'java' 카테고리의 다른 글
톰캣, 자바 메모리 관련 (0) | 2010.02.03 |
---|---|
파일 다운 로드 관련 (0) | 2010.02.03 |
파일 업로더 (0) | 2009.12.10 |
힙 사이즈 구하기 (0) | 2009.12.04 |
jdk 설치 윈도우, 리눅스 (0) | 2009.11.28 |