使用 picasso android 库加载图像表单 URL 时出现 HTTP 504 错误

Riz*_*epi 2 java android kotlin picasso

我想从带有 picasso android 库的 URL 加载图像并将其显示以查看,但仅在 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()
                    }

                })
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)

Vir*_*tel 9

您必须像这样networkSecurityConfigAndroidManifest.xml文件中设置一个:

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




    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

之后,在您的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>
Run Code Online (Sandbox Code Playgroud)

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

我希望它会帮助你......!

  • 对我来说这没有帮助 (2认同)

Riz*_*epi -7

感谢大家的帮助,我找到了这种情况的解决方案,我删除FirebaseFirestore.getInstance()了我的家庭活动,因为我不再在主页上使用 firebase。我不知道为什么,但如果我不删除主页中的代码,应用程序在真实设备 android 7.0 Nougat 中运行正常,但在模拟器 7.0 Nougat 中仍然出错。