【发布时间】:2022-08-21 20:52:33
【问题描述】:
我的应用程序使用 Android 的 Picasso 库从 flickr 加载图像。奇怪的是,在将我的应用程序迁移到 Kotlin 后,它工作正常,但现在我开始出现“随机”503 错误。
我已经在 flickr 控制面板中为每个图像设置了所有权限,因此它们是完全公开的,并将安全设置为最低级别无济于事。
起初我认为降低 flickr 的安全性是关键,但这是错误的,因为我仍然有这个问题。也许它根本与 Kotlin 迁移无关,但我记得不久前它运行良好。
奇怪的是,如果我调试并复制 url 并将其粘贴到浏览器中,它就可以正常加载。
接下来是我加载主屏幕图像的方法:
private fun setTodaysThoughtPainting() {
binding!!.ivTtodaysThought.setOnClickListener { v: View? -> startThoughtActivity(\"\") }
val isTodayThought = AWPreferences.todayThoughtPrefIsToday(this)
mainPainting = mainViewModel!!.getTodaysPainting(isTodayThought)
//FLICKR URL EXAMPLE: mainPainting.setUrl(\"https://live.staticflickr.com/xxx/xxx_xxx_o_d.jpg\");
if (mainPainting != null) {
Picasso.get().load(mainPainting!!.url)
.transform(RoundedTransformation(cornerRadius, 0))
.into(binding!!.ivTtodaysThought, object : Callback {
override fun onSuccess() {
trackId = mainViewModel!!.getTodaysTrack(isTodayThought)
mainThought = mainViewModel!!.getTodaysThought(
mainPainting,
isTodayThought,
idLanguage,
trackId
)
if (mainThought != null) {
setMainShortenThought(mainThought!!)
setMainThoughtDate(Calendar.getInstance())
binding!!.ivTtodaysThought.viewTreeObserver.addOnGlobalLayoutListener(
object : OnGlobalLayoutListener {
override fun onGlobalLayout() {
binding!!.ivTtodaysThought.viewTreeObserver.removeOnGlobalLayoutListener(
this
)
val realImgSize = ImageHelper.getRealImageSize(
binding!!.ivTtodaysThought
)
setThoughtMargin(realImgSize[0])
}
})
}
}
override fun onError(e: Exception) {
e.printStackTrace()
}
})
}
}
有什么帮助吗?
编辑1:
这是毕加索堆栈跟踪:
2022-06-15 23:59:03.231 32258-32258/com.xxx.xxx W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 503
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.lang.Thread.run(Thread.java:929)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 503
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.lang.Thread.run(Thread.java:929)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 503
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-06-15 23:59:03.232 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-06-15 23:59:03.233 32258-32258/com.xxx.xxx W/System.err: at java.lang.Thread.run(Thread.java:929)
2022-06-15 23:59:03.233 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)
2022-06-15 23:59:03.282 32258-32258/com.xxx.xxx W/System.err: com.squareup.picasso.NetworkRequestHandler$ResponseException: HTTP 503
2022-06-15 23:59:03.282 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.NetworkRequestHandler.load(NetworkRequestHandler.java:51)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:219)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:175)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at java.lang.Thread.run(Thread.java:929)
2022-06-15 23:59:03.283 32258-32258/com.xxx.xxx W/System.err: at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:354)
编辑1:
经过几个月的努力,我终于发现这个问题与毕加索无关。
我将图像存储在 Flickr 中,我的结论是 Flickr 团队可能已经进行了更改(例如安全更改或其他),因为我尝试使用不同的域测试图像,具体为 this 及其工作。我已经写了 Flickr 支持,但还没有回复。
我仍然坚持这一点。
编辑2:
这没有任何意义,但是当每个图像的配置相同时,有些图像有效,有些图像无效。
比以往任何时候都更卡住:)
-
我面临同样的问题。您找到解决方案了吗?
-
你好@Abhi,不幸的是还没有,我不知道在哪里可以从 StackOverflow 中找到帮助:s
-
我可以使用 Glide 加载图像,但不能使用 Picasso。如果使用不同的库不是问题,那么您可以使用 Glide。
-
感谢@Abhi 的输入。我会考虑的,但这不正常。我在我的所有应用程序中都使用 Picasso,将所有应用程序都迁移到 Glide 会让人头疼。
-
请看我的编辑@dnhyde
标签: android image kotlin picasso http-status-code-503