使用具有改造的响应拦截器

时间:2015-08-13 11:24:23

标签: android retrofit okhttp

我看到OkHttp中存在ResponseInterceptors。我想使用一个,但我直接使用Retrofit而不是OkHttp。

我的问题首先是可以使用ResponseInterceptors进行改造吗?如果是这样的话?请求拦截器有api方法但我无法找到任何相应的响应方法。

2 个答案:

答案 0 :(得分:3)

对于偶然发现这一点的人,我在进一步搜索后找到了答案。请注意,以下内容需要OkHttp 2.2+并改进1.9 +

//First create the OkHttp client and add your response interceptor
OkHttpClient httpClient = new OkHttpClient();
httpClient.interceptors().add(new ApiResponseInterceptor());

//then set the client on your RestAdapter
RestAdapter.Builder builder = new RestAdapter.Builder()
       .setEndpoint(ACCOUNTS_SERVICE_BASE_URL)
       .setClient(new OkClient(httpClient))
       .setConverter(new GsonConverter(gson)) 
       .setRequestInterceptor(getAuthRequestInterceptor())
       .setLogLevel(RestAdapter.LogLevel.FULL); 

答案 1 :(得分:0)

另请参阅此this question,它似乎与此重复。一种可能性是覆盖改造execute中的OkClient方法:

OkClient client = new OkClient(okHttpClient) {
    @Override
    public retrofit.client.Response execute(retrofit.client.Request request) throws IOException {
        retrofit.client.Response response = super.execute(request);

        // Inspect 'response' before returning it

        return response;
    }
};

RestAdapter.Builder restAdapterBuilder = new RestAdapter.Builder()
        .setEndpoint(API_BASE_URL)
        .setClient(client);