OkHttp Interceptor is Null - PullRequest
       14

OkHttp Interceptor is Null

0 голосов
/ 11 июня 2019

У меня есть этот класс для создания службы с retrofit2:

public class ServiceGenerator {

    private static Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl(UrlProvider.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create());

    private static Retrofit retrofit = builder.build();


    private static HttpLoggingInterceptor.Level logLevel = BuildConfig.DEBUG ?
            HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE;

    private static HttpLoggingInterceptor logging =
            new HttpLoggingInterceptor().setLevel(logLevel);

    private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

    public static <S> S createService(Class<S> serviceClass) {
        if (!httpClient.interceptors().contains(logging)) {
            httpClient.addInterceptor(logging);
            httpClient.addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Interceptor.Chain chain) throws IOException {
                    Request original = chain.request();
                    Request request = original.newBuilder()
                            .header("HEADER_USER_AGENT", "USER_AGENT")
                            .method(original.method(), original.body())
                            .build();

                    return chain.proceed(request);
                }
            });

            httpClient.authenticator(new TokenAuthenticator());
            builder.client(httpClient.build());
            retrofit = builder.build();
        }
        return retrofit.create(serviceClass);
    }
}

Я получил эту ошибку в аварийном репортере:

java.lang.IllegalStateException: Null interceptor: [null, okhttp3.logging.HttpLoggingInterceptor@85a6f78, *.*.*.e.c@1f1feb6, *.*.*.e.c@66917b7]
    at java.lang.Thread.run(Thread.java:764)
    at *.*.*.S.run
    at *.*.*.Y.a
    at *.*.*.Y.e
    at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1040)
    at okhttp3.OkHttpClient.<init>(OkHttpClient.java:283)

Эта ошибка возникает на некоторых устройствах и вособый случай.
Вероятность вызова createService метода из другого потока.
Помогает ли нам ExecuterService?
Как исправить эту ошибку?помогите мне, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...