【问题标题】:Can't load image by placeholder.com url无法通过 placeholder.com url 加载图像
【发布时间】:2020-06-17 09:21:11
【问题描述】:

遇到了一个奇怪的问题,尝试从此处通过模型内部的 url 下载任何照片 -> https://jsonplaceholder.typicode.com/photos,例如此“https://via.placeholder.com/150/92c952”但出现错误:

Glide: Load failed for https://via.placeholder.com/600/92c952 with size [788x788]
class com.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.io.FileNotFoundException(https://via.placeholder.com/600/92c952)
 call GlideException#logRootCauses(String) for more detail
  Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE
There was 1 cause:
java.io.FileNotFoundException(https://via.placeholder.com/600/92c952)
 call GlideException#logRootCauses(String) for more detail
    Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
There was 1 cause:
java.io.FileNotFoundException(https://via.placeholder.com/600/92c952)
 call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class java.io.FileNotFoundException: https://via.placeholder.com/600/92c952

顺便说一句,如果我试图从其他链接加载图像,例如这个 -> https://avatars.mds.yandex.net/get-pdb/1088712/8b19d278-0b9b-46f8-89e4-66f5541efc55/s1200?webp=false

一切正常。另外我想提一下,图片没有加载 Picasso、Fresco 等。使用

InputStream inputStream = new URL(urlLik).openStream();
bitmap = BitmapFactory.decodeStream(inputStream);

也无济于事。
在此先感谢,在这个问题上真的很累。

使用 glide 加载图像的代码:

 RequestOptions requestOptions = RequestOption.placeholderOf(R.drawable.white_background).timeout(15000)
                    .error(R.color.grey);
        Glide.with(application)
                    .setDefaultRequestOptions(requestOptions).load("https://via.placeholder.com/150/92c952")
.placeholder(R.drawable.white_background).dontAnimate().into(image);

【问题讨论】:

  • 你能在从 Glide 加载图像的地方添加代码吗?我想看看你提供给 Glide 的配置。
  • @MaddyBlacklisted,添加代码
  • 可能与 github.com/bumptech/glide/issues/3065 相关的问题看起来你还遇到了 Glide 中 OkHttp 的一些 cookie 或内存问题

标签: java android


【解决方案1】:

此问题与 User-Agent 标头参数有关。它与 Glide 无关,与 https://via.placeholder.com 有关。您可以通过 GlideUrl 创建 URL 并添加 User-Agent 标头来解决此问题。

GlideUrl url = new GlideUrl("https://your-url.com", new LazyHeaders.Builder()
            .addHeader("User-Agent", "your-user-agent")
            .build());

【讨论】:

  • 哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇
  • 谢谢。很高兴知道我的帮助又为您节省了 6 个小时:-P 干杯。
  • 感谢@MaddyBlacklisted 这对我也有用。
【解决方案2】:

使用coil 库进行图像加载。 在您的应用级别添加以下依赖项build.gradle

implementation("io.coil-kt:coil:0.9.1")

从 URL 加载:

imageView.load("https://via.placeholder.com/600/92c952")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2012-06-30
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多