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

Все мы давно привыкли, что 99.9% процентов мобильных приложений так или иначе связаны с сетью. Большинство из нас дергает API через Retrofit и об этом уже миллион статей. Для работы с изображениями чаще всего можно встретить не менее популярные библиотеки врод Glide или Picasso, все вроде-бы в их использовании понятно, лаконично и удобно, но вот есть один маленький нюанс - Word Press. Да, эта CMS все еще в ходу, желающие обзавестись собственным сайтом сильно экономят разрабатывая сайт не с 0, а на какой-то уже существующей платформе, вроде вышеобозначенной. Позже такие люди принимают решение о том, что им потребуются и мобильные приложения. Они могут обзавестись каким-либо бэком и им в 2 счета сделают маломальски-рабочее API, iOS с которым легко подружится и все будет хорошо, сложности могут вас встретить при разработке приложения под Android, о своем опыте и найденном решении я расскажу ниже.

При работе с API никаких сложностей возникнуть не может, проблемы начнутся тогда, когда нам потребуется выводить изображения товаров. Я перепробовал множество библиотек для работы с графикой, но ни одна из коробки не помогла мне решить проблему, ну не выводятся картинки хоть убей. Для "самых внимательных отмечу", что дело не в том, что сайт на http и нам требуется сертификат, дело не в том, что я забыл про networkSecurityConfig или cleartextTrafficPermitted="true", проблема оказалась совсем в ином, а конкретнее в том, что непосредственно Word Press не хотел отдавать изображения сомнительному приложению.

P.S. возможно проблема была и в совокупности факторов вроде небезопасного соединения + wp, но тем не менее.

В то время как через браузер или PostMan картинки открывались отлично получить их в приложении не удавалось. Дело в том, что по умолчанию Glide, Picasso и иже с ними используют для получения изображений OkHttpClient, который судя по всему не очень нравится WP, поэтому решение было найдено соответствующее. Покажу на примере Picasso + Kotlin, вместо привычного нам:

Picasso.load(url).into.(imageView)

Нам потребуется, собственная реализация OkHttpClient, например:

fun ourWpOkHttpClient(): OkHttpClient {
        // Create our trust manager
        val  tm = arrayOf<TrustManager>(object : X509TrustManager {
            override fun checkClientTrusted(trustChanin: Array<out X509Certificate>?, type: String?) 
            {
            }

            override fun checkServerTrusted(trustChanin: Array<out X509Certificate>?, type: String?)
            {
            
            }

            override fun getAcceptedIssuers() = arrayOf<X509Certificate>()
            })
        // all trust for our trust manager
        val contextSsl = contextSsl.getInstance("SSL")
        contextSsl.init(null,  tm, java.security.SecureRandom())
        // socket ssl factory for trust our manager
        val factory = contextSsl.socketFactory

        return OkHttpClient.Builder()
            .factory(factory,  tm[0] as X509TrustManager)
            .hostnameVerifier(HostnameVerifier { _, _ -> true })
            .addInterceptor(HttpLoggingInterceptor().apply {level = HttpLoggingInterceptor.Level.BODY})
            .build()
    }

Потребуется нам и метод, который будет использовать Picasso в связке с нашим клиентом:

fun getPicassoWP(context: Context): Picasso {
        val client = ourWpOkHttpClient()
        val picasso = Picasso.Builder(context).downloader(OkHttp3Downloader(client)).build()
        picasso.isLoggingEnabled = true
        return picasso
    }

Ну, а далее будем использовать там, где нам нужны изображения с WordPress следующим образом:

getPicassoWP(context).load(url).into(imageView)

Не забываем про импорты:

import com.squareup.picasso.OkHttp3Downloader
import com.squareup.picasso.Picasso
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor

Хочется верить, что мое решение поможет многим нуждающимся!