错误HTTP 504使用Picasso android库加载图像形式URL时

问题描述 投票:0回答:3

我想使用Picasso android库从URL加载图像并将其显示以查看,但仅在android 7.0牛轧糖中出现错误。

图像的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)
java android kotlin picasso
3个回答
0
投票

504是超时错误代码,意味着您(客户端)要连接到的服务器上游没有收到来自上游其他服务器的“及时”响应

=>尝试通过模拟器检查您的Internet连接


0
投票

您必须像这样在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>

现在您的应用将对任何类型的连接发出所有请求。有关更多信息,请阅读this

我希望它将对您有帮助。...!


0
投票

[谢谢大家,我找到了针对这种情况的解决方案,我在首页活动中删除了FirebaseFirestore.getInstance(),因为我不再在主页上使用firebase。我不确定为什么,但是如果不删除主页中的代码,则应用程序在真实设备android 7.0牛轧糖中正常运行,但在模拟器7.0牛轧糖中仍然出错。

© www.soinside.com 2019 - 2024. All rights reserved.