Retrofit - Intercept responses globally

前端 未结 3 1109
旧巷少年郎
旧巷少年郎 2020-12-29 02:44

I\'d like to intercept all responses received by the retrofit engine, and scan for HTTP error code, for example error 403.

I\'m aware I can use the failure(RetrofitE

3条回答
  •  不思量自难忘°
    2020-12-29 03:11

    Another possibility is to override the execute method in Retrofit's OkClient. In my case I was looking for a specific response header, so it went something like this:

    OkClient client = new OkClient(okHttpClient) {
        @Override
        public retrofit.client.Response execute(retrofit.client.Request request) throws IOException {
            retrofit.client.Response response = super.execute(request);
    
            // Do whatever with 'response', such as looking for the value of a particular header:
    
            List headers = response.getHeaders();
            for (retrofit.client.Header header : headers) {
                if (MY_HEADER.equalsIgnoreCase(header.getName())) {
                    this.savedValue = header.getValue();
                    break;
                }
            }
    
            return response;
        }
    };
    
    RestAdapter.Builder restAdapterBuilder = new RestAdapter.Builder()
            .setEndpoint(API_BASE_URL)
            .setClient(client);
    

提交回复
热议问题