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

前段时间项目遇到一个很奇怪的问题,因为另外一个项目之前用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)

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

发布了18 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/github_36787585/article/details/103918864