作者/Tamic
http://blog.csdn.net/sk719887916/article/details/52195428
前言
用过RxJava和Retrofit的朋友,用久了就会发现Retrofit说难不难,说简不简,对于实际项目中,单纯的用Retrofit做请求库,开发起来还是很多不便,必须请求头和参数处理,API接口数目众多时的处理, Https证书验签,cookie持久,错误结果处理,统一操作加载过渡UI等,因此我对Retrofit再次进行了封装,一直关注我的朋友以前看我封装的《 基于Retrofit2.0 封装的超好用的RetrofitClient工具类》的一文,已对Retrofit结合RxJava时遇到上面的问题进行了完整封装,但是不是Builder模式,因此感觉还是有点土,特此我进行了长达两个月Novate 框架的开发,
为何起名为Novate?
Novate的英文原意是用新事物代替 ,我开发目的是用新的东西来代替Retrofit的有些不易操作的地方,因此起名新奇的东西,所以结合了原来的Http用法习惯,又加入了Retrofit和RxJava的特性,因此起名 :Novate
进行下文前请先了解Retrofit和Rxjava,不懂请移步:
系列导读:
介绍
Novate的改进
- 优化设计:加入基础API,减少Api冗余
- 强大的缓存模式: 支持离线缓存, 无网络智能加载缓存,可配置是否需要缓存
- cookie管理:自带cookie管理机制
- 全方位请求模式:支持多种方式访问网络(get,put, post ,delete)
- 轻送调用:支持表单,图文一起,json上传。
- 文件传输:支持文件下载和上传,支持进度
- 动态添加:支持请求头和参数统一添加,分别添加。
- 结果处理:支持对返回结果的统一处理,自动帮你序列化复杂的数据。
- 扩展性强:支持自定义的Retrofit的API,默认Api无法满足时可自定义自己的Service
- 悠雅方便:支持统一请求网络的过程的流程控制,以方便帮你完美加入Processbar进度。
- RxJava结合: 结合RxJava,线程智能控制。
效果
用法
基本构建:
Novate novate = new Novate.Builder(this)
.baseUrl(baseUrl)
.build();
除了基本的构建还提供更了其他API
构建你的header头和参数
Map<String, String> headers = new HashMap<>();
headers.put("apikey", "4545sdsddfd7sds");
Map<String, String> parameters = new HashMap<>();
parameters.put("uid", "878787878sdsd");
实例化:
Novate novate = new Novate.Builder(this)
.addParameters(parameters)
.connectTimeout(8)
.baseUrl("you api url")
.addHeader(headers)
.addLog(true)
.build();
更多:
novate = new Novate.Builder(this)
.addHeader(headers) //添加公共请求头
.addParameters(parameters)//公共参数
.connectTimeout(10) //连接时间 可以忽略
.readTimeout(10) //读取 可以忽略
.addCookie(false) //是否同步cooike 默认不同步
.addCache(true) //是否缓存 默认缓存
.addCache(cache, cacheTime) //自定义缓存
.baseUrl(