改造 - 全球拦截响应

avi*_*ran 31 android retrofit okhttp

我想拦截改装引擎收到的所有响应,并扫描HTTP错误代码,例如错误403.

我知道我可以使用每个请求的失败(RetrofitError错误)回调并检查403,但我想全局包装响应.

我可以看到请求拦截是可能的,但我没有看到类似的响应选项.

有什么建议?

avi*_*ran 68

我能够通过向改装正在使用的OkHttpClient添加拦截器来实现这一点.

Retrofix 2.x:

val clientBuilder = OkHttpClient.Builder()
clientBuilder.addInterceptor { chain ->
            val request = chain.request()
            val response = chain.proceed(request)
            if (response.code() == 403) {
                handleForbiddenResponse()
            }
            response
        }
Run Code Online (Sandbox Code Playgroud)

改造1.x:

   OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
   clientBuilder.
            addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                   Request request = chain.request();
                   Response response = chain.proceed(request);
                   if (response.code() == 403) {
                         handleForbiddenResponse();
                   }
                   return response;
                }
            });


    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(clientBuilder.build();)
            .build();
Run Code Online (Sandbox Code Playgroud)