Retrofit2 에서 Request와 Response를 커스텀하게 하기 위해선 interceptor를 이용하면 된다.
OkHttpClient.Builder builder = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
// 헤더를 자유 자재로 변경
Request.Builder builder = original.newBuilder();
builder.addHeader("Content-Type","application/json; charset=utf-8");
builder.addHeader("Accept","application/json; charset=utf-8");
builder.method(original.method(),original.body());
Request request = builder.build();
Response response = chain.proceed(request);
// 아래 소스는 response로 오는 데이터가 URLEncode 되어 있을 때
// URLDecode 하는 소스 입니다.
return response.newBuilder()
.body(ResponseBody.create(response.body().contentType()
, URLDecoder.decode(response.body().string(),"utf-8")))
.build();
}
});
위 소스에는 생각 보다 큰 내용은 없습니다.
1. header에 content-typed으로 application/json 설정
2. response body를 URLDecode 진행
즉, addInterceptor를 해서 추가적으로 설정하고자 하는 소스를 커스텀 하게 바꾸면 됩니다.
참고하세요.
혹시 좀더 자세한 내용이 필요하신 분은 댓글 주세요.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android] TextView에 링크 적용 하기 (1) | 2016.12.07 |
---|---|
[Retrofit2] Request Retry (1) | 2016.11.24 |
[Android] ONE store 최신 In-App 결제 모듈 v16.02.00 사용시 (0) | 2016.11.18 |
[Android] LinearLayout 에서 layout_weight를 사용할 때 (0) | 2016.11.18 |
[Android] Edittext, TextView 에서 singline deprecated (1) | 2016.11.18 |