第一个参数是进度监听接口
RxHttp在本年4月份一经推出,就受到了泛博Android 开发者的喜爱,截止本文发表在github上已有1100+star,为此,我本身也建个RxHttp&RxLife 的群(群号:378530627)目前群里也有将近180号人,里面有不少小伙伴提了很多有价值的创意,才使得RxHttp一直对峙走到了此刻,在此,感谢感动大家的喜爱。
这期间,一直有人问我,retrofit不香吗?之前不知道该如何回答这个问题,此刻我想说,香!!retrofit无疑是目前综合得分最高的选手,但它也有它的不敷。
RxHttp相较于retrofit,成果上,两者均能实现,并无多大差异,更多的差异浮现成果的使用上,也就是易用性,如对文件上传/下载/进度监听的操纵上,RxHttp用及简的API,可以说碾压retrofit;此外在baseUrl、大众参数/请求头、请求加解密等成果上的易用性都要优于retrofit;然而这些,小我私家感受都不算什么,小我私家感受RxHttp最大的优势在于它近乎为0的上手本钱、极简的API以及高扩展性,看完这篇文章,相信你会有同感。
那RxHttp就没犯错误谬误吗?有,那就是它的不变性目前还不如retrofit,终究RxHttp刚出道8个月,且全部是我一小我私家在维护,固然,并不是说RxHttp不不变,RxHttp未开源前,在我司的项目已经使用了近2年,接着本年4月份将其开源,至今大巨细小已迭代20多个版本,目前用的人也不在少数,可以说很不变了。
2、简介RxHttp是基于OkHttp的二次封装,并与RxJava做到无缝跟尾,一条链就能发送任意请求。主要优势如下:
1. 撑持Gson、Xml、ProtoBuf、FastJson等级三方数据解析工具
2. 撑持Get、Post、Put、Delete等任意请求方法,可自界说请求方法
3. 撑持在Activity/Fragment/View/ViewModel/任意类中,自动封锁请求
4. 撑持统一加解密,且可对单个请求设置是否加解密
5. 撑持添加大众参数/头部,且可对单个请求设置是否添加大众参数/头部
6. 史上最优雅的实现文件上传/下载及进度的监听,且撑持断点下载
7. 史上最优雅的对错误统一措置惩罚惩罚,且不冲破Lambda表达式
8. 史上最优雅的措置惩罚惩罚多个BaseUrl及动态BaseUrl
9. 史上最优雅的措置惩罚惩罚网络缓存
10. 30秒即可上手,学习本钱极低
gradle依赖
implementation 'com.rxjava.rxhttp:rxhttp:1.3.6' //注解措置惩罚惩罚器,生成RxHttp类,即可一条链发送请求 annotationProcessor 'com.rxjava.rxhttp:rxhttp-compiler:1.3.6' //打点RxJava及生命周期,Activity/Fragment 销毁,自动封锁未完成的请求 implementation 'com.rxjava.rxlife:rxlife:1.1.0' //非必需 按照本身需求选择Converter RxHttp默认内置了GsonConverter implementation 'com.rxjava.rxhttp:converter-jackson:1.3.6' implementation 'com.rxjava.rxhttp:converter-fastjson:1.3.6' implementation 'com.rxjava.rxhttp:converter-protobuf:1.3.6' implementation 'com.rxjava.rxhttp:converter-simplexml:1.3.6'注:kotlin用户,请使用kapt替代annotationProcessor
缓存成果,请检察:RxHttp 全网Http缓存最优解
3、使用 3.1、筹备事情RxHttp 要求项目使用Java 8,请在 app 的 build.gradle 文件中添加以下代码
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }此时,再Rebuild一下项目(通过Rebuild生成RxHttp类),就可以开始RxHttp的入坑之旅
3.2、配置默认的BaseUrl通过@DefaultDomain注解配置默认域名,如下:
public class Url { @DefaultDomain //设置为默认域名 public static String baseUrl = "https://www.wanandroid.com/"; }此法式长短必需的,这里先介绍@DefaultDomain注解的用法,更多有关域名的介绍,请检察本文3.6章节----多域名/动态域名
3.3、请求三部曲先来看看如何发送一个最简单的请求,如下
RxHttp.get("") //第一步, 通过get、postXxx、putXxx等要领,确定请求类型 .asString() //第二步, 通过asXxx系列要领,确定返回数据类型 .subscribe(s -> { //第三步, 订阅回调(此法式同RxJava订阅不雅察看者) //请求告成 }, throwable -> { //请求掉败 });是的,不用怀疑,就是这么简单,重要的工作说3遍
任意请求,任意返回数据类型,皆遵循请求三部曲
任意请求,任意返回数据类型,皆遵循请求三部曲
任意请求,任意返回数据类型,皆遵循请求三部曲
到这,你已经掌握了RxHttp的精髓,我们只需服膺请求三部曲,使用RxHttp就会得心应手。
3.3.1、第一部曲:确定请求类型RxHttp内部共供给了14个请求要领,如下:
RxHttp.get(String) //get请求 参数拼接在url后面 RxHttp.head(String) //head请求 参数拼接在url后面 RxHttp.postForm(String) //post请求 参数以{application/x-www-form-urlencoded}形式提交 RxHttp.postJson(String) //post请求 参数以{application/json; charset=utf-8}形式提交,发送Json东西 RxHttp.postJsonArray(String) //post请求 参数以{application/json; charset=utf-8}形式提交,发送Json数组 RxHttp.putForm(String) //put请求 参数以{application/x-www-form-urlencoded}形式提交 RxHttp.putJson(String) //put请求 参数以{application/json; charset=utf-8}形式提交,发送Json东西 RxHttp.putJsonArray(String) //put请求 参数以{application/json; charset=utf-8}形式提交,发送Json数组 RxHttp.patchForm(String) //patch请求 参数以{application/x-www-form-urlencoded}形式提交 RxHttp.patchJson(String) //patch请求 参数以{application/json; charset=utf-8}形式提交,发送Json东西 RxHttp.patchJsonArray(String) //patch请求 参数以{application/json; charset=utf-8}形式提交,发送Json数组 RxHttp.deleteForm(String) //delete请求 参数以{application/x-www-form-urlencoded}形式提交 RxHttp.deleteJson(String) //delete请求 参数以{application/json; charset=utf-8}形式提交,发送Json东西 RxHttp.deleteJsonArray(String) //delete请求 参数以{application/json; charset=utf-8}形式提交,发送Json数组温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32940.html