OkGo详解

OkGo详解一 什么是 OkGoOkGo 基于 okhhttp 的封装类 你会发现他真的比 okhttp 简单的多 一个专注于让网络请求更简单的框架 与 RxJava 完美结合 比 Retrofit 更简单易用 二 主要功能 1 基本的 get post put delete head options trace patch 八种请求 2 支持 upString upJson upBytes upFile 等 up 类方法上传特定数据 3 支持一个 key 上传一个文件 也可以一个 key 上传多个文件 也

一.什么是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); }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233242.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android控件-TabLayout使用介绍

    Android控件-TabLayout使用介绍TabLayout简述简单示例属性介绍tabIndicatorFullWidthtabRippleColortabTextAppearancetabModetabIndicatorColortabIndicatorHeighttabIndicatorGravity简述TabLayout是Androidsupport中的一个控件android.support.design.widget.Tab…

    2022年5月6日
    63
  • 前端框架bootstrap和layui有什么区别

    前端框架bootstrap和layui有什么区别做前端的小伙伴肯定都用过或听过Bootstrap和LayUi,小编我虽然不是专业的前端程序员,但是对于前端还是颇有研究,闲暇事情会经常研究各种前端框架的源码,一来可以借鉴优秀框架的思想,二来可以顺便学习可以提高自己,好了,不废话了。web前端全栈资料粉丝福利(面试题、视频、资料笔记、进阶路线)先看百度Bootstrap的定义Bootstrap是美国Twitter公司的设计师MarkOtto和JacobThornton合作基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前端

    2022年6月25日
    45
  • SIGPIPE的设计意图

    SIGPIPE的设计意图SIGPIPE的设计意图SIGPIPE是为以下这种情况设计的:grep“pattern”<reallyhugefile|headgrep可能会输出成千上万行文本,但head只会读取前10行然后就退出。一旦head退出,grep就会收到SIGPIPE,然后被杀死。这样grep就不至于一直没完没了的输出没用的内容。如果你不想让你的程序因此被杀死,你可以自行处理SIGPIPE。这样的话你就会遇到writeerror,errno等于EPIPE。原文链接:SIGPIPEand

    2022年5月7日
    36
  • hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)

    hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)hadoop与大数据的关系?大数据技术正渗透到各行各业。作为数据分布式处理系统的典型代表,Hadoop已成为该领域的事实标准。但Hadoop并不等于大数据。它只是一个成功的分布式系统,用于处理离线数据。大数据领域中还有许多其他类型的处理系统。随着大数据技术的普及,Hadoop已成为其开源功能和卓越性能的新宠。有些人甚至认为大数据是Hadoop。实际上,这是一种误解。Hadoop只是一个用于处…

    2022年4月29日
    34
  • 深度学习小白实现残差网络resnet18 ——pytorch「建议收藏」

    深度学习小白实现残差网络resnet18 ——pytorch「建议收藏」深度学习小白实现残差网络resnet18——pytorch利用闲暇时间写了resnet18的实现代码,可能存在错误,看官可以给与指正。pytorch中给与了resnet的实现模型,可以供小白调用,这里不赘述方法。下面所有代码的实现都是使用pytorch框架书写,采用python语言。网络上搜索到的resne18的网络结构图如下。resnet18只看图中左侧网络结构就可以。(ps:使用的是简书上一个博主的图,如有冒犯,请谅解)接下来,根据如图的网络结构进行搭建网络。通过观察网络结构,发现在网络结

    2022年5月15日
    55
  • pip清华源安装_pip3换源

    pip清华源安装_pip3换源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplebcolzpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplesome-package注意,simple不能少,是https而不是http设为默认升级pip到最新的版本(>=…

    2025年8月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号