我想使用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)
504是超时错误代码,意味着您(客户端)要连接到的服务器上游没有收到来自上游其他服务器的“及时”响应
=>尝试通过模拟器检查您的Internet连接
您必须像这样在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。
我希望它将对您有帮助。...!
[谢谢大家,我找到了针对这种情况的解决方案,我在首页活动中删除了FirebaseFirestore.getInstance()
,因为我不再在主页上使用firebase。我不确定为什么,但是如果不删除主页中的代码,则应用程序在真实设备android 7.0牛轧糖中正常运行,但在模拟器7.0牛轧糖中仍然出错。