赞
踩
前段时间项目遇到一个很奇怪的问题,因为另外一个项目之前用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)
如此,大功告成。送人洞房。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。