반응형
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 낙자쌤
- vscode
- MySQL
- Spring Legacy
- oracle
- Eclipse
- 확장프로그램
- sql developer
- 이클립스
- Windows10
- jQuery
- #php.ini
- 윈도우10
- 오라클
- 한국소프트웨어인재개발원
- Visual Studio Code
- Linux
- 리엑트
- vscode에서github연동
- 이클립스 파일인코딩
- extension
- musthave
- GIT
- eclipse github
- 노트패드
- 낙짜쌤
- 낙자
- Java
- #MySQL
- Github
Archives
- Today
- Total
자바강사 낙자쌤
안드로이드 HTTP통신시 전송방식(get/post) 설정 이슈 본문
728x90
반응형
안녕하세요? Java강의하는 낙자쌤입니다.
저는 현재 가산디지털단지에 위치한 한국소프트웨어인재개발원(KOSMO)에서 자바 국비과정을 강의하고 있습니다.
안드로이드 강의를 진행하면서 새롭게 알게 된 사실이 하나 있습니다.
먼저 HTTP통신을 위한 코드를 보시죠.
try {
URL url = new URL("접속할 URL");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
Log.i(TAG, "HTTP OK 성공");
}
else {
Log.i(TAG, "HTTP OK 안됨");
}
}
catch (Exception e) {
e.printStackTrace();
}
위와 같이 connection.setRequestMethod("GET") 으로 하면 우리는 당연히 "get방식으로 통신이 된다" 라고 생각하게 되죠. 물론 저도 똑같았습니다. 그렇게 될거라고 생각을 했죠.
하지만 결과는 달랐습니다.
post로 요청이 들어오는겁니다.
그래서 살짝 멘붕이 왔죠. 지금까지 학생들한테 잘못 설명을 하고 있었던 겁니다.
HTTP통신에서 get방식이나 post방식을 선택하는것과는 별개로 다음 문장이 문제였는데요...
connection.setRequestMethod("GET");
//InputStream으로 데이터를 가져오겠다는 설정
connection.setDoInput(true);
//outputStream으로 데이터를 넘겨주겠다는 설정
connection.setDoOutput(true);//--> 하지만 요게있음 무조건 POST가 된다.
setDoOutput()를 쓰는순간 스트림이 생성되기 때문에 setRequestMethod()에서 GET을 설정하더라도 전송방식은 POST가 되는것이었습니다.
따라서 GET방식의 전송을 하려면 아래와 같이 수정하시면 됩니다.
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(false);
이제 테스트 해보면 GET방식으로 요청이 들어오는것을 알 수 있습니다.
오늘의 교훈은 절대 테스트 해보기전에는 될것이다 생각하지 말자 입니다.
728x90
반응형
'Android' 카테고리의 다른 글
안드로이드 프로젝트 소스코드 용량 줄이기 (0) | 2021.09.26 |
---|