회사 프로젝트에 새로운 배달업체를 추가하던 중 response가 한글이 깨지는 현상이 발생했다.
GET방식을 통해 값을 받을 때는 BufferedReader를 사용하도록 하자!
public Object getApiJson(String url) throws Exception {
Object objData = null;
String requestURL = EgovProperties.getProperty("Newtrack.api.url") + url;
if(requestURL != null) {
HttpGet getRequest = new HttpGet(requestURL);
getRequest.setHeader("authToken", EgovProperties.getProperty("Newtrack.api.authKey"));
getRequest.setHeader("Cache-Control", "no-cache");
getRequest.setHeader("Content-type", "application/json;charset=UTF-8");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
CloseableHttpResponse response = httpClient.execute(getRequest);
if(response.getStatusLine().getStatusCode() == 200) { //200일때가 성공
ResponseHandler<String> handler = new BasicResponseHandler();
String body = handler.handleResponse(response);
JSONParser jParser = new JSONParser(); //제이슨형식으로 파싱하기 위한 제이슨파서
objData = jParser.parse(body); //String body를 제이슨형식으로 파싱
}
}
return objData;
}
-- ResponseHandler를 사용해서 기존에 잘 사용했는데 이유를 잘 모르겠다.
보내주는 쪽에서 서버 세팅이 다른 것 같기도 하고.. 구글링해서 해보라는 것 다 해봤는데 안된다.
public Object getApiJson(String url) throws Exception {
Object objData = null;
String requestURL = EgovProperties.getProperty("Newtrack.api.url") + url;
if(requestURL != null) {
HttpGet getRequest = new HttpGet(requestURL);
getRequest.setHeader("authToken", EgovProperties.getProperty("Newtrack.api.authKey"));
getRequest.setHeader("Cache-Control", "no-cache");
getRequest.setHeader("Content-type", "application/json;charset=UTF-8");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
CloseableHttpResponse response = httpClient.execute(getRequest);
if(response.getStatusLine().getStatusCode() == 200) { //200일때가 성공
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String strBR = bufferedReader.readLine();
bufferedReader.close();
JSONParser jParser = new JSONParser(); //제이슨형식으로 파싱하기 위한 제이슨파서
objData = jParser.parse(strBR); //String body를 제이슨형식으로 파싱
}
}
return objData;
}
-- BufferedReader를 이용하면 된다는 글을 보고 해보니 이건 성공!