java.net.URLConnection [PostConnection.java]
- URL 내용을 읽어오거나, URL 주소에 GET / POST로 데이터를 전달 할 때 사용함
- 웹 페이지나 서블릿에 데이터를 전달 수 있음
- URL --> openConnection() --> URLConnection --> getInputStream --> InputStream (내용읽음)
- URL 의 OpenStream() : URL의 입력 스트림만 개설 (차이점)
- URLConnection : URL의 입력, 출력 스트림 개설
Construct
protected URLConnection(URL) : 직접 생성 불가능 , OpenConnection으로 연결함
Method
addRequestProperty(String a, String b) : 키(a) 와 값(b)을 가지고 요청할 수 있는
Properity 값을 미리 설정해 놓음. 특정 키값을 가지고 읽을 수 있도록 함
connect() : 연결 된 곳에 접속 할때 (connect() 호출해야 실제 통신 가능함)
getAllowUserInteraction() : 연결 된 곳에 사용자가 서버와 통신 할 수 있는 환경 확인(boolean)
in/output이 해당 서버 , 연결 포트로 가능한지 확인함
getContent() : content 값을 리턴 받음 (inputStream 값을 리턴 함)
getContent(Class[]) : 위 내용을 class[] 배열 값을 입력함
getContentEncoding() : 인코딩 타입을 String으로 리턴함
getContentLength() : content 길이 (-1 이면 정상적으로 값이 넘어오지 않았음)
getContentType() : content 가 http로 되어 있는지 타입 (ex: http-type )
getDate() : content의 날짜 (new Date(~~) 으로 변환해 줘야 함 / Long 리턴)
getDefaultAllowUserInteraction(): 기본적으로 User와 통신 가능한 상태인지 (boolean)
getDefaultUserCaches() : cache를 사용할 것 인지 (boolean)
getDoInput() : Server에서 온 데이터를 입력 받을 수 있는 상태인지 (본인 상태-default : true)
getDoOutput() : Server에서 온 데이터를 출력 할수 있는 상태인지
(Client 상태 -default : false)
getExpiration() : 유효 기간
getFileNameMap() : File Name Map
getHeaderField(int) : Head Field 값 받아옴 (http Head 값)
getHeaderFiled(String) :
getLastModified() : 마지막 수정 시간
getInputStream() : InputStrema 값을 뽑아냄
getOutputStream() : OutputStream 값을 뽑아냄
setDoInput(boolean) : Server 통신에서 입력 가능한 상태로 만듬
setDoOutput(boolean) : Server 통신에서 출력 가능한 상태로 만듬
- Server와 통신을 하고자 할때는 반드시 위 두 method를 true로 해 놔야 함
URLConnection uc = null;
try{
url = new URL("http://www.korea.co.kr");
}catch(MalformedURLException me){}
try{ uc = url.openConnection(); }catch(IOException io){}
System.out.println("output = "+ uc.getDoOutput());
System.out.println("Input = "+ uc.getDoInput());
uc.setDoOutput(true); // 스트림 출력 설정
uc.setDoInput(true); // 스트림 입력 설정 -- 기본적으로 입력 스트림
OutputStream out =null;
InputStream in = null;
try{
in = uc.getInputStream();
// out = uc.getOutputStream();
}catch(IOException ie){}
System.out.println("input = "+ in.toString());
// System.out.println("out = "+ out.toString());
[예제]
URLConnection을 이용한 Web 페이지 읽어서 저장하기
import java.io.FileOutputStream;
Get 방식으로 데이터 전달함 (검색 조회해서 결과 저장함)
import java.io.BufferedReader;
java.net.URLEncoder - Static method : encode(String, String)
- Encoding : 아스키 문자가 아닌 문자열들을 특수한 문자들로 변환하는 것
java.net.URLDecoder - Static method : decode(String, String)
- static Method 하나만 존재함
- 네트워크는 데이터를 byte로 전송함, 이를 만드는 것을 Encoder ,
해제하는 것을 Decoder라고 함
String dataconver = null;
//============ Encoder ==============//
try{
dataconver = URLEncoder.encode(data,"KSC5601"); // KSC5601 --> euc-kr
}catch(UnsupportedEncodingException ie){}
System.out.println("data = "+ data);
System.out.println("data conver = "+ dataconver);
// ============ Decoder ============== //
try{
dataconver = URLDecoder.decode(dataconver,"KSC5601");
}catch(UnsupportedEncodingException ue){}
System.out.println("data conver = "+ dataconver);
결과
data = 테스트 전송
data conver = %C5%D7%BD%BA%C6%AE+%C0%FC%BC%DB
data conver = 테스트 전송
출처 : http://ggoreb.tistory.com/114
'IT > Java' 카테고리의 다른 글
[JAVA] String -> json (0) | 2017.04.24 |
---|---|
[JSONArray library] 필요한 라이브러리 (0) | 2015.04.07 |
[ArrayList] 내용 변경하기 (0) | 2014.11.25 |
[ubuntu] java 버전 변경 (0) | 2014.08.18 |
URLConnection (0) | 2014.08.05 |