我看到OkHttp中存在ResponseInterceptors。我想使用一个,但我直接使用Retrofit而不是OkHttp。
我的问题首先是可以使用ResponseInterceptors进行改造吗?如果是这样的话?请求拦截器有api方法但我无法找到任何相应的响应方法。
答案 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);