美文网首页NetAndroid技术知识Android知识
Retrofit2+okhttp3拦截器处理在线和离线缓存

Retrofit2+okhttp3拦截器处理在线和离线缓存

作者: _醉生梦死 | 来源:发表于2017-03-27 17:38 被阅读798次

前言:

前面写了关于get的一些基本使用方式。本来这里是打算说说post的。但是发现还得先说说缓存的配置。其实在之前就说过关于缓存的配置,而且的确是良心保证,自己的项目就是这么配置的,而且自己也写了接口测试了。是正确的,但是有的朋友还是说不行。这次我再来配置一次,更加清晰,更加详细。想要自己了解更多http://square.github.io/retrofit这个是retrofit的官网,自己可以去看看,同时也建议什么都还是去官网看看比较靠谱。然后其实我也很多看不懂,只能硬着头皮了没有人能帮助你。

我们先暂时了解几个事情:

1.get请求是通过传递一些参数,获取服务器的数据。不会改变数据库的数 据。

2.post是提交数据,讲一些数据发送到服务器,然后改变数据库的。

3.我们的请求相关的有两个比较重要的概念,一个Request,一个是Response,request是请求,是你发送给服务器的东西。Response是服务器给你返回的东西。

4.一般缓存的话都是针对get,post你提交数据不需要缓存。

let us do it:

明白了我们就来开始做吧。我们还是在之前的配置基础上来配置缓存。如果不知道配置的可以看上篇文章,或者百度,retrofit2+okhttp3的配置使用,一大堆。这里还给大家一个建议,要么就别看,反正都看了就不要急躁,慢慢的细细的看完看懂。

第一步:拦截器:

拦截器就是我们类似路由器一样,所有的网络来去都得进过这里。我们的流程是这样的:

1.服务器给我们返回数据了我们通过拦截器拿到response。

2.修改response里面的一些信息。

3.retrofit会通过我们已经修改的信息选择缓存策略。

第二步:两种缓存:

1.在有网络的情况下直接获取网络上的数据,没有网络的情况下获取缓存的数据。

2.无论有无网络我们都去获取缓存的数据(我们会设置一个缓存时间,在某一段时间内(例如60S)去获取缓存数据。超过60S我们就去网络重新请求数据)。

3.如果有其他的缓存需求可以自按照需求修改,okhttp本身就支持5种策略。

第一种缓存拦截器

有网络读取网络的数据,没有网络读取缓存。但是切记第一次肯定是要有网络的,没有缓存数据怎么读取对吧

第二种缓存拦截器

无论有无网络我们都去获取缓存的数据(我们会设置一个缓存时间,在某一段时间内(例如60S)去获取缓存数据。超过60S我们就去网络重新请求数据)。

然后设置okhttp就可以了。

然后就可以了然后下面是良心实验数据

说明:

我们这是的无论有无网络都读取缓存。看as我们请求了4次,第前面2次卧是有网络的情况,后面2次是没有网络的情况访问的。无论怎么访问,服务器只被访问了一次。而客户端也没次都有数据。数据是同一个数据。完全符合我们说的第一种缓存



说明:

客户端我第一次有网络访问,服务器被访问了。然后我段开网络,服务器没有被访问到。但是客户端有之前的缓存数据。


这里就是okhttp的缓存设置。然后有疑问的朋友可以给我留言。另外我们有时候可能需要在调取的地方设置,这个也简单,自己封装一个参数就好。传什么模式就什么模式。

原创文章希望大家帮帮推广下关注原创。同时也希望大家能多提点意见。谢谢大家了。点击图片应该可以关注。再次感谢大家了。

相关文章

网友评论

    本文标题:Retrofit2+okhttp3拦截器处理在线和离线缓存

    本文链接:https://www.haomeiwen.com/subject/sitlottx.html