본문 바로가기

Android/NetWork

안드로이드/Android HttpURLConnection클래스로 POST 요청하기

안드로이드/Android HttpURLConnection클래스로 POST 요청하기



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

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

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

URL u = new URL( 주소 ); 

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

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

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

huc.setRequestMethod("POST");

// InputStream으로 서버로 부터 응답 헤더와 메시지를 읽어들이겠다는 옵션을 정의한다.

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();



출처 : http://ibabo.tistory.com/266



참고 사이트 : 

클래스 java.io.InputStream 한글 API

클래스 java.io.OutputStream 한글 API