HttpURLConnection클래스로 웹페이지 POST 요청하기

Posted by 겨울에
2011. 6. 27. 14:11 scrap/ Java/JSP

http://blog.naver.com/musalhk/150082514641
[출처] HttpURLConnectio클래스로 웹페이지 POST 요청하기|작성자 무살해커  



// 요청할 파라미터의 정보를 입력한다.

String body = "id=asdf&pass=asdf";

 

// URL클래스의 생성자로 주소를 넘겨준다.

URL u = new URL( 주소 );

 

// 해당 주소의 페이지로 접속을 하고, 단일 HTTP 접속을 하기위해 캐스트한다.

HttpURLConnection  huc = (HttpURLConnection) u.openConnection();

 

// POST방식으로 요청한다.( 기본값은 GET )

huc.setRequestMethod("POST");

 

I// nputStream으로 응답 헤더와 메시지를 읽어들이겠다는 옵션을 정의한다.
   huc.setDoInput(true);

 

// OutputStream으로 POST 데이터를 넘겨주겠다는 옵션을 정의한다.
   huc.setDoOutput(true);

 

// 요청 헤더를 정의한다.( 원래 Content-Length값을 넘겨주어야하는데 넘겨주지 않아도 되는것이 이상하다. )
   huc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

 

// 새로운 OutputStream에 요청할 OutputStream을 넣는다.
   OutputStream os = huc.getOutputStream();

 

// 그리고 write메소드로 메시지로 작성된 파라미터정보를 바이트단위로 "EUC-KR"로 인코딩해서 요청한다.

// 여기서 중요한 점은 "UTF-8"로 해도 되는데 한글일 경우는 "EUC-KR"로 인코딩해야만 한글이 제대로 전달된다.
   os.write( body.getBytes("euc-kr") );

 

// 그리고 스트림의 버퍼를 비워준다.
   os.flush();

 

// 스트림을 닫는다.

os.close();

 

// 응답받은 메시지의 길이만큼 버퍼를 생성하여 읽어들이고, "EUC-KR"로 디코딩해서 읽어들인다.

BufferedReader br = new BufferedReader( new OutputStreamReader( huc.getInputStream(), "EUC-KR" ), huc.getContentLength() );

 

String buf;

 

// 표준출력으로 한 라인씩 출력

while( ( buf = br.readLine() ) != null ) {

System.out.println( buf );

}

 

// 스트림을 닫는다.

br.close();