실행환경 : intellij + springBoot(websocket)
네이버 챗봇 API를 연동하는 작업을 하는데 응답을 받아오는 한글이 깨져서 나왔다.
public String sendMessage(@Payload String chatMessage) throws IOException
{
URL url = new URL(apiUrl);
String message = getReqMessage(chatMessage);
String encodeBase64String = makeSignature(message, secretKey);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json;UTF-8");
con.setRequestProperty("X-NCP-CHATBOT_SIGNATURE", encodeBase64String);
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.write(message.getBytes("UTF-8"));
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) { // 정상 호출
BufferedReader in = new BufferedReader(
new InputStreamReader(
con.getInputStream()));
String decodedString;
String jsonString = "";
while ((decodedString = in.readLine()) != null) {
jsonString = decodedString;
}
//chatbotMessage = decodedString;
JSONParser jsonparser = new JSONParser();
try {
JSONObject json = (JSONObject)jsonparser.parse(jsonString);
JSONArray bubblesArray = (JSONArray)json.get("bubbles");
JSONObject bubbles = (JSONObject)bubblesArray.get(0);
JSONObject data = (JSONObject)bubbles.get("data");
String description = "";
description = (String)data.get("description");
chatMessage = description;
} catch (Exception e) {
System.out.println("error");
e.printStackTrace();
}
in.close();
} else { // 에러 발생
chatMessage = con.getResponseMessage();
}
return chatMessage;
}
위에 소스는 아래의 주소를 참조한 소스이다.https://medium.com/@dynamic_maize_coyote_676/spring-boot%EB%A1%9C-%EB%82%98%EB%A7%8C%EC%9D%98-chatbot-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-868b4a379209
참조한 분은 문제가 없어보이는데 내 환경에선 한글이 깨져서 나왔다.
검색을 해보니... 문제는 "InputStreamReader"에 인코딩 형식이 빠져서 였다.
참고사이트 : https://sarc.io/index.php/development/1444-httpurlconnection-utf-8
결론: ... intellij에 인코딩형식이 안맞아서 깨지는거 같은 느낌인데... 우선은 UTF-8을 넣으니 정상 작동했다!
Intellij에 인코딩형식을 수정해서 테스트 해봐야 할 것 같다.
'개발 유틸리티 > intellij' 카테고리의 다른 글
[Intellij / 인텔리제이] 프로젝트 버전 안맞는 현상 ( Execution failed for task ':compileJava'. ) (1) | 2021.07.02 |
---|---|
[Intellij / 인텔리제이] Spring Test MockMvc의 한글 깨짐 (0) | 2021.06.23 |
[Intellij / 인텔리제이] 윈도우 실행시 한글 깨짐 (1) | 2021.05.18 |
[Intellij / 인텔리제이] 안쓰는 import 제거 하는 방법 (0) | 2020.09.30 |
[Intellij / 인텔리제이] 자동주석 포맷 설정 (0) | 2020.09.15 |