Ошибка HTTP 504 при загрузке формы изображения URL с библиотекой Android Picasso - PullRequest
1 голос
/ 17 октября 2019

Я хочу загрузить изображение из URL с помощью библиотеки Picasso Android и показать его для просмотра, но я получаю сообщение об ошибке только в Android 7.0 Nougat.

URL-адрес изображения использует HTTPS. В моем другом проекте с тем же URL-адресом изображения я не получил ошибку, если я запускаю в нуге реального устройства 7.0, но все равно ошибка, если я запускаю в нуле эмулятора 7.0.

Я пытаюсь перейти к другому изображению URL издругой домен, и я тоже не получил ошибку.

как я могу это исправить?

Picasso.get().load("My_URL_Image")
                .resize(200,200)
                .centerInside()
                .placeholder(R.drawable.ic_default)
                .error(R.drawable.ic_default)
                .into(holder.imageView, object : Callback{
                    override fun onSuccess() {}

                    override fun onError(e: Exception?) {
                        e?.printStackTrace()
                    }

                })
W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 504
W/System.err:     at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
W/System.err:     at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
W/System.err:     at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
        at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)

Ответы [ 3 ]

3 голосов
/ 17 октября 2019

Вам нужно будет установить networkSecurityConfig в вашем AndroidManifest.xml файле следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config">




    </application>
</manifest>

После этого в папке xml вы создадите новый файл в соответствии с указанным выше именем кода network_security_config, чтобы включить все запросы без шифрования:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Теперь ваше приложение будет выполнять все запросы на любые виды соединений. Для получения дополнительной информации прочитайте это .

Надеюсь, это поможет вам ....!

0 голосов
/ 18 октября 2019

Спасибо за помощь, ребята, я нашел свое решение для этого случая, я удаляю FirebaseFirestore.getInstance() в своей домашней деятельности, потому что я больше не использую firebase на домашней странице. Я не уверен, почему, но если я не удаляю этот код на моей домашней странице, приложение работает нормально на реальном устройстве Android 7.0 Nougat, но все равно ошибка в эмуляторе 7.0 Nougat.

0 голосов
/ 17 октября 2019

504 - это код ошибки тайм-аута, означающий, что сервер, находящийся в восходящем направлении по отношению к тому, к которому вы (клиент) подключаетесь, не получил «своевременный» ответ от другого сервера, находящегося далее в восходящем направлении

=> Попробуйте проверить подключение к интернету через эмулятор

...