Intereting Posts
Как ввести ввод в поле ввода webView программно в Android Kitkat (4.4) RxJava Observable.cache недействителен Линия пересечения линий в Android Android Studio 2.2 Ошибка синхронизации сервисов Google. Как написать приложение для Android для чтения / записи sysfs? Является ли поведение по умолчанию для Android WebView изменено на открытие внутри всех ссылок? Самый быстрый способ поворота растрового изображения большого размера Android – Как сделать снимок с камеры или галереи Styling ActionbarSherlock: textColor элементов действия Как масштабировать спрайты в libgdx в соответствии с разрешениями экрана? Как удалить элемент из моего пользовательского базового адаптера? Результаты поиска в реальном времени в пустых объектах Android – изменение размера текста EditText на основе клавиатуры Экспорт Android-приложения с помощью ProGuard дает ошибку ParseException Xamarin.Forms MasterDetailPage с TabbedView – вкладка Заголовок, отображаемый при навигации через меню гамбургера

Дооснащение 1.9 с помощью OkHttp 2.2 и перехватчиков

Я думал, что эти последние версии должны быть совместимы. Есть этот твит; Https://twitter.com/JakeWharton/status/553066921675857922, а также в журнале изменений Retrofit 1.9.

Однако, когда я пытаюсь это сделать:

OkHttpClient httpClient = new OkHttpClient(); httpClient.interceptors().add(new TokenExpiredInterceptor()); mRestAdapter = new RestAdapter.Builder() .setEndpoint(API_ENDPOINT) .setClient(httpClient) .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) .setRequestInterceptor(new AuthorizationInterceptor()) .build(); 

Это все еще не работает. Метод setClient жалуется на несовместимый объект Client;

 Error:(29, 21) error: no suitable method found for setClient(OkHttpClient) method Builder.setClient(Client) is not applicable (argument mismatch; OkHttpClient cannot be converted to Client) method Builder.setClient(Provider) is not applicable (argument mismatch; OkHttpClient cannot be converted to Provider) 

Что мне не хватает? Я также вижу, что OkHttpClient не реализует клиентский интерфейс.

Я использую этот подход на данный момент; https://medium.com/@nullthemall/execute-retrofit-requests-directly-on-okhttp-2-2-7e919d87b64e

Я неправильно истолковал журнал изменений? Maye Retrofit 1.9 может использовать OkHttpClient 2.2, когда он находится в пути к классам, но интерфейс еще не адаптирован?

Вы передаете OkHttpClient в RestAdapter.Builder который принимает реализации Client . OkHttpClient , исключительно, не связан с Retrofit, если не используется в реализации Client .

Вы должны передать OkHttpClient в экземпляр OkClient который реализует Client

.setClient(new OkClient(httpClient))

 OkHttpClient httpClient = new OkHttpClient(); httpClient.interceptors().add(new TokenExpiredInterceptor()); mRestAdapter = new RestAdapter.Builder() .setEndpoint(API_ENDPOINT) .setClient(new OkClient(httpClient)) .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE) .setRequestInterceptor(new AuthorizationInterceptor()) .build();