JAVA(자바) HttpURLConnection로 Json 데이터 전송하기
API를 테스트하거나, 연동이 필요할 시 Json 데이터를 HttpURLConnection을 이용하여
전송하는 경우가 많이 있다.
이때 데이터에 한글이 들어가 있는 경우 문자가 깨질 수 있어 확인이 필요하다
아래는 HttpURL로 Json 데이터 전송 테스트 코드이다.
URL url = new URL("url");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST"); // 보내는 타입
String param = ""; // JsonData
// 아래는 전송
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
try {
osw.write(param);
osw.flush();
// 아래는 응답
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
// 출력
}
// 닫기
osw.close();
br.close();
} catch ...
conn.setDoOutput의 경우 기본값이 false이며 true로 지정하지 않을 시 쓰기가 불가능하다.
인코딩의 경우 Writer, Reader시 뒤에 인자로 "utf-8" or "euc-kr" 등을 쓰면 인코딩이 가능하다
데이터를 전송할 때 인코딩이 필요하다 하여
아래와 같이 JSon 데이터를 인코딩 하여 보내지는 말기를 바란다.
- String str = URLEncoder.encode(jsonData, "utf-8");
- byte [] eucKr = jsonData.getBytes("urf-8");
Writer 사용할 때 인자로 인코딩 값이 없으면 서버 설정 값으로 인코딩이 된다고 알고 있다.
그런데 직접적으로 데이터를 인코딩하여 전송한다면
압축을 두 번 한 것과 다른 게 없지 않은가?..
응답하는 서버에서 디코딩을 하는 경우라면 물론 해줘야겠지만
별말이 없다면 그냥 위와 같이 사용하길 바란다
'IT관련 > 자바' 카테고리의 다른 글
자바(JAVA) - 다형성 관련 (0) | 2020.04.29 |
---|---|
자바(JAVA) - String 비교 equals(), String pool (0) | 2020.04.28 |
자바(JAVA) - 컬렉션 검색 과 HashMap (0) | 2020.04.02 |
자바(JAV A) - 컬렉션과 제네릭 사용 (0) | 2020.04.01 |
자바(JAVA) - 컬렉션과 제네릭 (0) | 2020.03.30 |