[Retrofit2] Request와 Response를 커스텀화 하기
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를 해서 추가적으로 설정하고자 하는 소스를 커스텀 하게 바꾸면 됩니다.
참고하세요.
혹시 좀더 자세한 내용이 필요하신 분은 댓글 주세요.