Модифицировать общий заголовок без OkHttp? - PullRequest
3 голосов
/ 20 марта 2019

Проблема:

Сегодня я столкнулся с исключением в OkHttp.

Вызвано: java.lang.IllegalStateException: Ожидаемый уровень API Android 21+, но был 19

Я узнал, что Okhttp больше не поддерживает устройства <21 версии. </p>

со страницы github Okhttp , а также по github выдает , изokhttp версия 3.13 -

OkHttp работает на Android 5.0+ (уровень API 21+) и на Java 8+.

Это очень серьезное изменение, потому что все мои проектыработают на minSdkVersion = 16.Или хотя бы 19.

Что я пробовал?

  • Есть способ добавить заголовок в каждый запрос индивидуально, как описано в Модифицированная официальная страница , но этонужно будет добавить заголовок вручную в каждом запросе.
  • Я не хочу использовать старую версию Okhttp.Потому что это может привести меня к неожиданным проблемам, которые исправляются в новых версиях okhttp.(или я должен использовать старый?)

Что мне нужно:

Я не хочу удалять поддержку для ~ 10% устройств (если я увеличуminSdkVersion до 21+) только для использования Охттп.Я использую Okhttp для добавления общего заголовка ко всем запросам Retrofit.

Есть ли способ добавить общий заголовок без использования Okhttp?

1 Ответ

0 голосов
/ 20 марта 2019

Вы используете Interceptor для добавления всех желаемых заголовков следующим образом:

OkHttpClient.Builder builder = new OkHttpClient.Builder();

        builder.addInterceptor(new Interceptor() {
            Request request;

            @Override
            public Response intercept(@NonNull Chain chain) throws IOException {

                request = chain.request().newBuilder().addHeader("Authorization", "Bearer " + GlobalClass.accessToken)
                        .addHeader("Accept", "application/json").build();

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

и возвращаете компоновщик с этим

 return builder.connectTimeout(15, TimeUnit.SECONDS)
                .writeTimeout(25, TimeUnit.SECONDS)
                .readTimeout(15, TimeUnit.SECONDS).build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...