Is there a replacement for RequestInterceptor in Retrofit 2?

I encountered a problem due to which I RequestInterceptorwas removed from Retrofit 2 . Previously, my RestAdapter constructor was as follows:

private RestAdapter.Builder getBuilder(RequestInterceptor requestInterceptor) {
    RestAdapter.Builder builder = new RestAdapter.Builder()
            .setEndpoint(BuildConfig.SERVER_URL)
            .setClient(connectionClient)
            .setRequestInterceptor(requestInterceptor)
            .setConverter(new JacksonConverter());
    return builder;
}

As far as I know, at the moment it is recommended to use interceptorfrom the library OkHttpinstead RequestInterceptor.

I could not find an approximate implementation of this approach, so I will be grateful for any help in this matter.

Thanks!

+4
source share
2 answers

hooks must be set through OkHttpin modification 2

OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.interceptors().add(...)

and then register it for revision

Retrofit restAdapter = new Retrofit.Builder()
        .baseUrl(Constants.BASE_URL)
        .client(okHttpClient)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
+5

.

okHttpClient.interceptors().add(...)

. , .

public class HttpLoggingInterceptor implements Interceptor {

private final static String TAG = LogUtils.makeLogTag(HttpLoggingInterceptor.class);

@Override
public Response intercept(Chain chain) throws IOException {
    Request request = chain.request();
    LOGD(TAG, "**********************       REQUEST START     **********************");
    LOGD(TAG, "REQUEST URL -> "+request.urlString());
    LOGD(TAG, "REQUEST HEADERS -> "+request.headers());
    LOGD(TAG, "**********************       REQUEST END     **********************");


    Response response = chain.proceed(chain.request());


    LOGD(TAG, "**********************       RESPONSE START     **********************");
    LOGD(TAG, "RESPONSE CODE -> "+response.code());
    LOGD(TAG, "RESPONSE HEADERS -> "+response.headers());
    LOGD(TAG, "**********************       RESPONSE END     **********************");
    return response;
}

}

/

public static <S> S createService(Class<S> serviceClass) {
    okHttpClient.interceptors().add(new HttpLoggingInterceptor());
    Retrofit retrofit = builder.client(okHttpClient).build();
    return retrofit.create(serviceClass);
}
+2

Source: https://habr.com/ru/post/1613704/


All Articles