Intereting Posts
Использование ProGuard с Android Есть некоторая ошибка при компоновке загрузки Android, но не эффективна при запуске Последние возможности C ++ 11 с Android NDK Как получить видимый размер на мероприятии? Могу ли я редактировать файлы внутри оболочки Android (оболочка adb) Com.google.android.gms.maps.MapFragment: не удается разрешить символ "maps" MediaStore.Images.Thumbnails.getThumbnail возвращает неверный миниатюру вместо NULL Жизненный цикл операции – получение уведомления о том, что макет завершен Одновременный доступ к различным членам одного и того же объекта в Java Почему собственный поток oauth2 для Google требует секретности клиента? Firebase Cloud Messaging заменила ключи сервера на токены для отправки уведомлений / сообщений Как скрыть клавиатуру Android в режиме поиска Безлимитный параллелизм SQL sqlite Получить имя версии приложения с помощью adb Рекомендации по сохранению данных на Android?

OkHttpClient выдает исключение после обновления до OkHttp3

Я использую следующие строки кода, чтобы добавить заголовок по умолчанию ко всем моим запросам, отправленным с помощью Retrofit2:

private static OkHttpClient defaultHttpClient = new OkHttpClient(); static { defaultHttpClient.networkInterceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request().newBuilder() .addHeader("Accept", "Application/JSON").build(); return chain.proceed(request); } }); } 

После обновления версии до версии beta-3 мне также пришлось обновить OkHttp до OkHttp3 (на самом деле я просто изменил имена пакетов с okhttp на okhttp3, библиотека включена в модификацию). После этого я получаю исключения из этой строки:

 defaultHttpClient.networkInterceptors().add(new Interceptor()); 

Вызвано: java.lang.UnsupportedOperationException в java.util.Collections $ UnmodifiableCollection.add (Collections.java:932)


Причина: java.lang.ExceptionInInitializerError


В чем проблема?

Solutions Collecting From Web of "OkHttpClient выдает исключение после обновления до OkHttp3"

Вы должны использовать построитель, если хотите создать клиентский объект OkHttp (3).

Попробуйте изменить это:

 private static OkHttpClient defaultHttpClient = new OkHttpClient(); 

Что-то вроде этого:

  OkHttpClient defaultHttpClient = new OkHttpClient.Builder() .addInterceptor( new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request request = chain.request().newBuilder() .addHeader("Accept", "Application/JSON").build(); return chain.proceed(request); } }).build(); 
 compile 'com.squareup.retrofit2:retrofit:2.1.0' compile "com.squareup.retrofit2:converter-gson:2.1.0" compile "com.squareup.retrofit2:adapter-rxjava:2.1.0" compile 'com.squareup.okhttp3:logging-interceptor:3.4.0' 

Вероятно, вы должны использовать эти версии. Просто поместите их, синхронизируйте свой град , удалите все импорт и повторите попытку.

 import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory;