Glide请求图片自带请求头

最近再做一个项目,把微信网页版的接口解析出来,自定义界面,实现微信聊天的功能。

面临一个很直接,很蛋疼的问题,头像获取的问题,在初始化微信请求成功后,返回的response中会带一个cookies,这个cookies需要保存下来,接下来每次请求微信消息都要带上。

不然,微信的后台不会给你传输任何数据回来,很是蛋疼。

头像获取怎么办?用Glide框架,可以省很多事情,但是怎么把cookies添加进去呢?

自己写自定义控件,里面自己实现网络请假也可以,但是内存优化,缓存问题怎么办? 而且自己写的和glide框架比,肯定有很多不足。

刚开始自己写一个简单的Okhttp请求,在返回来后通过handler来刷新头像。但是在缓存时,和复用listview时,会出现图片显示不对的情况。用了线程池去维护子线程请求,但还是感觉慢,不如框架。

只能好好研究下Glide框架怎么添加cookies了。

在网上也有很多方法,但说的都是雨里雾里的,如果是小白,肯定看不懂。

首先大家要知道,Glide在3.6.0之后的版本,才支持添加请求头,如果各位的glide版本比较老,这样的话,里面添加cookies的类,你是怎么都找不到的,这一点就导致很多人懵逼。

这点知道后,后面的事情就很简单了。

GlideUrl cookie = new GlideUrl(mPath, new LazyHeaders.Builder().addHeader("Cookie", MyApplication.cookie).build());
Glide.with(getContext()).load(cookie).placeholder(R.drawable.loading1).into(this);

就这两行代码就可以搞定,cookie就是你请求回来的cookies解析成的字符串。  相当于自定义一个GlideUrl,里面不知可以添加cookie,请求头中的所用东西都可以添加,这个看大家需求。

我这里是自定义了一个imageview,所以into 是this。

这样比较好的就是,处理逻辑都在自定义控件中,你只需要传递一个path过来就可以了。

也是我现在写代码的一个思想,能自己做的事情,交给自己去做,不要在外面去写过多的逻辑,这样会导致类之间联系紧密,做封装和抽取都会不方便。

如果自己做的事情过多,或者自己做的事情比较重复,可以再向上抽取父类,super类,总之让重复代码减少,让有效代码增多,让逻辑更加具有条理性,这样的代码就是我认为的简洁代码。

比如添加数据,怎么办,写一个接口,里面有增删改查几大方法,去写一个实现类来实现此接口,里面是对数据库进行的增删改查的操作,再去写一个单例类,里面的成员变量就可以是data这个类,在里面写增删改查的方便,这样,我可以调用这个单例,可以直接做增删改查的操作,这样所有的增删改查的逻辑都在这边,不会出现这一堆、那一堆的清理,数据的逻辑就会很清楚。

这个项目还用到数据库GreenDao,很方便的数据库使用,下篇给大家介绍。

posted @ 2017-08-22 09:48  wlwqnj  阅读(3862)  评论(0编辑  收藏  举报