본문 바로가기

나의 플랫폼/안드로이드

[Retrofit2] Request와 Response를 커스텀화 하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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를 해서 추가적으로 설정하고자 하는 소스를 커스텀 하게 바꾸면 됩니다.

참고하세요.


혹시 좀더 자세한 내용이 필요하신 분은 댓글 주세요.