IT/안드로이드

안드로이드 Volley 사용시 한글 깨짐현상 해결

주현태 2019. 10. 29. 10:42

오늘 위치정보를 뿌려주는 Rest API 서버를 개발하여 해당 서버와 연결하여서 작업을 진행하려고 하였으나 안드로이드의 경우 Thread를 이용하여 URL Connection을 진행할 수있다. 그리고 이러한 URLConnection을 Thread에 신경쓰지 않고 사용할 수 있도록 하는 것이 Volley 라는 라이브러리인데 해당 라이브러리를 사용하는데 한글 깨짐현상인 발생하였다. 이러한 현상을 방지하기 위한 추가코드를 포스팅 한다.

 

 

String url="url"

StringRequest req=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        /// 소스코드 ///
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
}){
    @Override //response를 UTF8로 변경해주는 소스코드
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        try {
            String utf8String = new String(response.data, "UTF-8");
            return Response.success(utf8String, HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            // log error
            return Response.error(new ParseError(e));
        } catch (Exception e) {
            // log error
            return Response.error(new ParseError(e));
        }
    }
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return super.getParams();
    }
};
req.setShouldCache(false);
requestQueue.add(req);

위와 같이 parseNetworkResponse 메서드를 오버라이딩하여 response 데이터를 UTF-8로 변경해주는 소스코드를 추가하여주면된다.