안드로이드/Android HttpURLConnection 에서 GET / POST 방식 사용상의 주의
1. HttpURLConnection 을 이용하여 GET 혹은 POST 방식으로 특정 서블릿을 호출하는 경우
HttpURLConnection.setRequestMethod("GET") 이라고 명시적으로 GET 을 지정하여도,
특정한 경우에는 내부적으로 POST로 처리함을 주의해야 한다.
HttpURLConnection.getOutputStream() 메소드 내부에서 현재 지정된 method 가 GET 인 경우
강제로 POST 로 변경한다.
따라서,
con.setRequestMethod("GET"); 로 GET 으로 설정했다고 하더라도,
아래의 라인이 추가된다면,
con.setDoOutput(true);
OutputStream out = con.getOutputStream();
내부적으로 POST 방식으로 변경된다.
2. 실질적으로 웹서버에 접속하여 요청을 보내고 응답을 수신하는 시점은
con.getResponseCode(); 로 판단된다.
getResponseCode() 를 호출하지 않으면, Network Connection 연결 요청 자체가 시도되지 않음이
확인되었다.. 다른 구현에서는 어떠한지 확인할 필요가 있다.
========================== sample code =================================
URL url_obj = new URL("http://테스트서블릿URL"); HttpURLConnection con = (HttpURLConnection)url_obj.openConnection(); con.setRequestMethod("GET"); // default is GET con.setDoInput(true); // default is true con.setDoOutput(true); //default is false InputStream in = con.getInputStream(); OutputStream out = con.getOutputStream(); // internally change to 'POST' int resCode = con.getResponseCode(); // connect, send http reuqest, receive htttp request System.out.println ("code = "+ resCode); |
========================= 서버 access.log ================================
203.242.137.163 - - [25/Jan/2008:16:08:04 +0900] "POST /테스트서블릿 HTTP/1.0" 200 1639 |
출처 : http://charmpa.egloos.com/1336665
'Android > NetWork' 카테고리의 다른 글
안드로이드/Android HttpURLConnection클래스로 POST 요청하기 (1) | 2012.06.25 |
---|---|
안드로이드/Android HttpURLConnection Request Header 값 세팅 하기 (0) | 2012.06.21 |
안드로이드/Android getResponseCode() 에러 날 경우 에러 메시지 보는방법 (0) | 2012.06.20 |
안드로이드/Android 서버 연동시 request body 셋팅 하기! (0) | 2012.06.19 |
안드로이드/Android C2DM 관련 궁금증~! (0) | 2012.06.01 |