JAVA - GET방식 HttpClient response 한글 깨짐

GARY·2022년 4월 22일
0

회사 프로젝트에 새로운 배달업체를 추가하던 중 response가 한글이 깨지는 현상이 발생했다.
GET방식을 통해 값을 받을 때는 BufferedReader를 사용하도록 하자!

1> 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일때가 성공
	        ResponseHandler<String> handler = new BasicResponseHandler();

            String body = handler.handleResponse(response);

            JSONParser jParser = new JSONParser(); //제이슨형식으로 파싱하기 위한 제이슨파서
            objData = jParser.parse(body); //String body를 제이슨형식으로 파싱
		}
	}

	return objData;
}

실행 화면

-- ResponseHandler를 사용해서 기존에 잘 사용했는데 이유를 잘 모르겠다.
보내주는 쪽에서 서버 세팅이 다른 것 같기도 하고.. 구글링해서 해보라는 것 다 해봤는데 안된다.

2> 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일때가 성공
			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를 이용하면 된다는 글을 보고 해보니 이건 성공!

profile
개발하는 개린이 개리

0개의 댓글