对OkHttp进行封装,实现了只查询缓存,网络请求失败自动查询本地缓存等功能

  就我个人的使用感觉而言,OkHttp算是用得最顺手的一个网络请求框架了,提供了拦截器Interceptor,可以很方便地在请求的时候做各种操作,比如添加请求头、url后面添加额外数据等,但是Android程序对于网络请求一般最好还是应该本地缓存请求的数据,在断网的时候可以在本地数据中读取展示出来,不致于一片空白,当然,关键数据还是应该从服务器获取,这个根据情况判断。

    首先,OkHttp是允许在本地保存请求和结果的,通过设置Cache-Control:max-age可以设置缓存保存的时间,OkHttp可设置CacheControl.FORCE_CACHE或CacheControl.FORCE_NETWORK来让请求只从本地缓存获取或只从服务器获取,这里写了个工具,将请求的方式扩展到四种 

*ONLY_NETWORK 只查询网络数据 

*ONLY_CACHED 只查询本地缓存

*CACHED_ELSE_NETWORK 先查询本地缓存,如果本地没有,再查询网络数据 

*NETWORK_ELSE_CACHED 先查询网络数据,如果没有,再查询本地缓存 

这样就可以根据场景需要在没网络的情况下加载本地数据(例如app首页的数据展示),使用方法也比较简单

okHttpUtils = new OKHttpUtils.Builder(this).build();
okHttpUtils.get("http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json", cacheType ,new Callback() {
        @Override
        public void onFailure(Request request, IOException e) {
            Log.d("failed",e.toString());
        }

        @Override
        public void onResponse(final Response response) throws IOException {
            //  tv.setText(response.body().string());
            Log.d("response", response.toString());
            String str = response.body().string();
            Log.d("response", str);
        }

    });

具体的用法参考https://github.com/duzechao/OKHttpUtils

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值