当前位置: 代码迷 >> 综合 >> 记录一次Glide加载网络图片失败class com.bumptech.glide.load.engine.GlideException: Failed to load resource(真正终结篇)
  详细解决方案

记录一次Glide加载网络图片失败class com.bumptech.glide.load.engine.GlideException: Failed to load resource(真正终结篇)

热度:33   发布时间:2024-01-24 20:27:23.0

前段时间项目遇到一个很奇怪的问题,因为另外一个项目之前用glide加载网络图片是正常的,同样的代码,换了项目就是加载不了,用PC浏览器能打开,查了很久依然无获。错误信息如下:


com.bumptech.glide.load.engine.GlideException: Failed to load resource
Cause (1 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{DirectByteBuffer->Object->Drawable}, DATA_DISK_CACHE, https://xxxxx/97/download?preview=true
Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}
Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->Bitmap->Drawable}
Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{DirectByteBuffer->BitmapDrawable->Drawable}

 

 

很多小伙伴习惯一通百度,结果都是无果,遇到奇葩的事情最好的结合后台人员。那既然用PC浏览器能打开,我们就用浏览器看看,(这里大家还是熟悉一下前端页面查看)来............

一步:

复制网络图片链接:https://xxxxx/97/download?preview=true到浏览器

两步:

F12    再  F5    -就如下图:

 

眼尖的同学是不是看出啥没有。通常不管是http还是https 有带header与不带之分,一般情况是不带是,后台不做校验,那么轻而易举加载出来,鬼知道那天后台哥们想不开了。。。。。。给你加点小东西。。。。。

接下来骚操作:

var setCookie = UserHelper().getCookieFromFile(viewHolder.itemView.context)( 保存本地的cookie信息)var path = GlideUrl(path, LazyHeaders.Builder().addHeader("device-type", "android").addHeader("Cookie", setCookie!!).build())
Glide.with(viewHolder.itemView.context).load(path).centerCrop().placeholder(R.color.app_color_f6).diskCacheStrategy(DiskCacheStrategy.ALL).into(viewHolder.mImg)

如此,大功告成。送人洞房。

 

 

  相关解决方案