OkGo详解

一.什么是OkGo

OkGo,基于okhhttp的封装类,你会发现他真的比okhttp简单的多,一个专注于让网络请求更简单的框架,与 RxJava 完美结合,比 Retrofit 更简单易用。

二.主要功能

1)基本的 get、post、put、delete、head、options、trace、patch 八种请求;

2) 支持 upString,upJson,upBytes,upFile 等 up 类方法上传特定数据;

3) 支持一个 key 上传一个文件,也可以一个 key 上传多个文件,也可以多文件和多参数一起上传;

4) 大文件下载和下载进度回调;

5) 大文件上传和上传进度回调;

6) 支持 cookie 的自动管理,并可自定义 cookie 管理策略;

7) 支持缓存模式,不仅支持 http 缓存协议,也支持自定义缓存策略;

8) 支持重定向;

9) 支持自定义超时自动重连次数;

10) 支持链式调用;

11) 支持 https 访问,支持双向认证;

12) 支持根据 tag 取消请求,也可全部取消;

13) 支持自定义 Callback,自动解析网络数据;

三.引入

//必须使用
compile 'com.lzy.net:okgo:3.0.4'

//以下三个选择添加,okrx和okrx2不能同时使用
compile 'com.lzy.net:okrx:1.0.2'
compile 'com.lzy.net:okrx2:2.0.2'  
compile 'com.lzy.net:okserver:2.0.5'

//或者
compile 'com.lzy.net:okgo:+'        //版本号使用 + 可以自动引用最新版
compile 'com.lzy.net:okrx:+'        //版本号使用 + 可以自动引用最新版
compile 'com.lzy.net:okserver:+'    //版本号使用 + 可以自动引用最新版

注意事项

使用该网络框架时,必须要在 Application 中做初始化,详细的初始化办法点击这里 

okgo使用的okhttp的版本是最新的3.8.0版本,OkGo详细文档点击这里 

okrx是基于RxJava的扩展项目,OkRx详细文档点击这里 

okrx2是基于RxJava2的扩展项目,OkRx2详细文档点击这里 

okserver是对okgo的扩展,包含两个核心入口类:

OkDownload是统一的下载管理,支持断点续传功能,OkDownload详细文档点击这里 

OkUpload是统一的上传管理,OkUpload详细文档点击这里

四.配置初始化

在baseApplication初始化okgo的配置,具体配置及说明如下:

 private void initOkGo() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        //log相关
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
        //log打印级别,决定了log显示的详细程度
        loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
        //log颜色级别,决定了log在控制台显示的颜色
        loggingInterceptor.setColorLevel(Level.INFO);
        //设置请求头,token值
        HttpHeaders headers = new HttpHeaders();
        headers.put("X-Access-Token", SPUtils.get(SpKey.TOKEN, "")+"");
//        LogUtils.v("X-Access-Token:" + SPUtils.get(SpKey.TOKEN, ""));
        builder.addInterceptor(loggingInterceptor);
        //自动管理cookie(或者叫session的保持),以下几种任选其一就行
        //使用sp保持cookie,如果cookie不过期,则一直有效
        //builder.cookieJar(new CookieJarImpl(new SPCookieStore(this)));
        //使用数据库保持cookie,如果cookie不过期,则一直有效
        builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));
        //使用内存保持cookie,app退出后,cookie消失
        //builder.cookieJar(new CookieJarImpl(new MemoryCookieStore()));
        //超时时间设置,默认60秒
        //全局的读取超时时间
        builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        //全局的写入超时时间
        builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        //全局的连接超时时间
        builder.connectTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
        OkGo.getInstance().init(this)
                .setOkHttpClient(builder.build())
                //全局统一缓存模式,默认不使用缓存,可以不传
                .setCacheMode(CacheMode.NO_CACHE)
                //全局统一缓存时间,默认永不过期,可以不传
                .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)
                //设置公共请求头
                .addCommonHeaders(headers)
                //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0;
                .setRetryCount(0);
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值