该库是封装了okhttp的标准RESTful风格的网络框架,可以与RxJava完美结合,比Retrofit更简单易用。支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持Https和自签名证书,支持超时自动重连,支持cookie与session的自动管理,支持四种缓存模式缓存网络数据,支持301、302重定向,扩展了统一的上传管理和下载管理功能。
一般在Aplication,或者基类中配置,只需要调用一次即可
- 可以配置log开关
- 全局的超时时间
- 全局cookie管理策略
- Https配置
- 超时重连次数
- 公共的请求头和请求参数等信息
注意:不要忘记了在清单文件中注册 Application
最简单的如果上面的配置OkHttpClient不想写,就用okgo中默认的,一行代码就可以完成。
- NO_CACHE:不使用缓存,该模式下cacheKey、cacheTime 参数均无效
- DEFAULT:按照HTTP协议的默认缓存规则,例如有304响应头时缓存。
- REQUEST_FAILED_READ_CACHE:先请求网络,如果请求网络失败,则读取缓存,如果读取缓存失败,本次请求失败。
- IF_NONE_CACHE_REQUEST:如果缓存不存在才请求网络,否则使用缓存。
- FIRST_CACHE_THEN_REQUEST:先使用缓存,不管是否存在,仍然请求网络。
使用缓存的场景比如:下拉刷新(上拉刷新不需要)CacheMode设置为 IF_NONE_CACHE_REQUEST,效果就是当用户网络没有的时候不至于出现白板的现象。
注意点:
缓存的对象bean必须实现Serializable接口,否者会报NotSerializableException。因为缓存的原理是将对象序列化后直接写入数据库中,如果不实现Serializable接口,会导致对象无法序列化,进而无法写入到数据库中,也就达不到缓存的效果。
上拉加载:
FileCallback具有三个重载的构造方法,分别是
- FileCallback():空参构造
- FileCallback(String destFileName):可以额外指定文件下载完成后的文件名
- FileCallback(String destFileDir, String destFileName):可以额外指定文件的下载目录和下载完成后的文件名
注意:
文件目录如果不指定,默认下载的目录为 sdcard/download/,文件名如果不指定,则按照以下规则命名:
1.首先检查用户是否传入了文件名,如果传入,将以用户传入的文件名命名
2.如果没有传入,那么将会检查服务端返回的响应头是否含有Content-Disposition=attachment;filename=FileName.txt该种形式的响应头,如果有,则按照该响应头中指定的文件名命名文件,如FileName.txt
3.如果上述响应头不存在,则检查下载的文件url,例如:http://image.baidu.com/abc.jpg,那么将会自动以abc.jpg命名文件
4.如果url也把文件名解析不出来,那么最终将以"unknownfile_" + System.currentTimeMillis()命名文件
每个请求前都设置了一个参数tag,取消则通过OkGo.cancel(tag)执行。 例如:在Activity中,当Activity销毁取消请求,可以在onDestory里面统一取消;
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/7429.html