Я использую Picasso для загрузки изображений с URL-адреса, полученного из API.
Это моя текущая конфигурация Пикассо. Я использую Dagger2 для обеспечения зависимости Пикассо.
@Provides
Picasso getPicasso(@Named("application-context") Context context, OkHttp3Downloader downloader) {
return new Picasso.Builder(context)
.downloader(downloader)
.indicatorsEnabled(true)
.loggingEnabled(true)
.build();
}
Это моя конфигурация OkHttp
@Provides
OkHttpClient getOkHttpClient(HttpLoggingInterceptor loggingInterceptor, Cache cache, Interceptor httpInterceptor) {
return new OkHttpClient.Builder()
.addInterceptor(httpInterceptor)
.addInterceptor(loggingInterceptor)
.cache(cache)
.build();
}
А вот и реализация LoggingInterceptor
@Provides
HttpLoggingInterceptor getHttpLoggingInterceptor() {
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(message -> Timber.tag("OkHttp").d(message));
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
return loggingInterceptor;
}
Но когда я использую picasso в адаптере просмотра ресайклера, как это
picasso.load(article.urlToImage)
.placeholder(R.drawable.placeholder)
.into(thumbnailImageView)
Загружается только изображение-заполнитель. Переданный URL-адрес изображения не загружается в представлении изображения
Ошибок тоже нет. Вот логарифм
D/Picasso: Main created [R1] Request{http://bsmedia.business-standard.com/_media/bs/img/article/2017-09/04/full/1504466214-5997.jpg}
D/Picasso: Hunter executing [R0]+11ms
D/Picasso: Dispatcher enqueued [R1]+1ms
D/Picasso: Hunter executing [R1]+2ms
D/Picasso: Main created [R2] Request{https://img.etimg.com/thumb/msid-63672403,width-672,resizemode-4,imgsize-538337/air-india.jpg}
D/Picasso: Dispatcher enqueued [R2]+1ms
D/Picasso: Hunter executing [R2]+1ms
D/Picasso: Main created [R3] Request{http://bsmedia.business-standard.com/include/_mod/site/html5/images/no-meta-preview.jpg}
D/Picasso: Dispatcher enqueued [R3]+1ms
D/Picasso: Hunter executing [R3]+1ms
D/Picasso: Main created [R4] Request{https://www.livemint.com/rf/Image-621x414/LiveMint/Period2/2018/04/09/Photos/Processed/[email protected]}
D/Picasso: Dispatcher enqueued [R4]+1ms
D/Picasso: Hunter executing [R4]+1ms
D/Picasso: Main created [R5] Request{http://bsmedia.business-standard.com/_media/bs/img/article/2018-03/12/full/1520793310-387.jpg}
D/Picasso: Dispatcher enqueued [R5]+1ms
D/Picasso: Hunter executing [R5]+1ms
Я вижу, что запрос на загрузку изображения выполняется, но изображение не загружается.
В чем проблема?
Перехватчик Http просто добавляет несколько заголовков для аутентификации API. Это журналы из loggingInterceptor. В моем журнале нет других журналов, касающихся Picasso.
Это журналы с loggingEnabled(true), у вас должны быть журналы с loggingInterceptor, не могли бы вы добавить этот код зависимости?
Единственные журналы перехватчика журналов, которые я вижу, относятся к Retrofit. Отредактировал вопрос с реализацией перехватчика логов.
Значит, никаких журналов от Timber tag OkHttp? Вы должны увидеть что-то вроде этого: `* -> POST / приветствие http / 1.1 * Host: example.com * Content-Type: plain / text * Content-Length: 3 * -> END POST * * <- 200 OK (22 мс) * Content-Type: plain / text * Content-Length: 6 * <- END HTTP`
Ага, не знаю. Пытался отладить, но тщетно. Я вижу один лог из тега OkHttp. В этом журнале просто выводится URL-адрес API, запрошенного при модернизации. Это все, что я получаю в логарифме
Попробуйте HttpLoggingInterceptor.Level.BODY вместо BASIC, вы должны получить дополнительную информацию о коде ответа: 200> OK или код 3/4xx
ты решил эту проблему? у меня такая же проблема
@ Ральф Ага. Удалите OkHttp3Downloader, и он будет работать нормально.
@SriramR Я наконец понял это, так как необычно, что мы не можем добавить загрузчик в Пикассо. Я попытался импортировать com.squareup.picasso.OkHttp3Downloader, а не com.jakewharton.picasso.OkHttp3Downloader, и он работает! Спасибо, кстати
Что делает ваш httpInterceptor? А какой-нибудь логи от вашего loggingInterceptor?