前言:
前面写了关于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的缓存设置。然后有疑问的朋友可以给我留言。另外我们有时候可能需要在调取的地方设置,这个也简单,自己封装一个参数就好。传什么模式就什么模式。
原创文章希望大家帮帮推广下关注原创。同时也希望大家能多提点意见。谢谢大家了。点击图片应该可以关注。再次感谢大家了。
网友评论