30秒上手新一代Http请求神器RxHttp

2、可选

android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [
rxhttp_package: ‘rxhttp’, //非必须,指定RxHttp类包名
//传入你依赖的rxjava版本,可传入rxjava2、rxjava3,依赖RxJava时必须
rxhttp_rxjava: ‘rxjava3’

]
}
}
}
}
dependencies {
implementation ‘com.github.liujingxing.rxlife:rxlife-coroutine:2.1.0’ //管理协程生命周期,页面销毁,关闭请求

//rxjava2 (RxJava2/Rxjava3二选一,使用asXxx方法时必须)
implementation ‘io.reactivex.rxjava2:rxjava:2.2.8’
implementation ‘io.reactivex.rxjava2:rxandroid:2.1.1’
implementation ‘com.github.liujingxing.rxlife:rxlife-rxjava2:2.1.0’ //管理RxJava2生命周期,页面销毁,关闭请求

//rxjava3
implementation ‘io.reactivex.rxjava3:rxjava:3.0.6’
implementation ‘io.reactivex.rxjava3:rxandroid:3.0.0’
implementation ‘com.github.liujingxing.rxlife:rxlife-rxjava3:2.1.0’ //管理RxJava3生命周期,页面销毁,关闭请求

//非必须,根据自己需求选择 RxHttp默认内置了GsonConverter
implementation ‘com.github.liujingxing.rxhttp:converter-fastjson:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-jackson:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-moshi:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-protobuf:2.6.0’
implementation ‘com.github.liujingxing.rxhttp:converter-simplexml:2.6.0’
}

最后,rebuild一下(此步骤是必须的) ,就会自动生成RxHttp类

三部曲解说

到这里相信很多人已经有疑问了

  • 如果我想发送Post等其它方式请求呢?
  • 文件上传下载及进度的监听呢?
  • 我想得到自定义的数据类型呢?

这些如何通过三部曲实现呢?别着急,接下来一一为大家讲解

第一步,确定请求方式

上面例子中,我们调用了RxHttp.get("http://...")语句,其中get操作符就代表Get请求。由此,我们可以猜测,发送Post请求,只需要调用post操作符即可。然而我们只猜对了一半,为啥这么说呢?Post请求中,我们常见的又分为两种,一种的表单形式的Post,另一种是Json字符串形式的Post。为此,RxHttp提供了两个发送Post请求的操作符,分别是postFormpostJosn,此时,我们就可以这样发送Post请求

RxHttp.postForm(“http://…”) //发送表单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});

RxHttp.postJson(“http://…”) //发送Json字符串单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});

如果想发送Delete、Put等其它方式的请求,同理,如下:

RxHttp.deleteForm(“http://…”)
RxHttp.deleteJson(“http://…”)
RxHttp.putForm(“http://…”)
RxHttp.putJson(“http://…”)
//其它请求方式同上

最后,我们来看下,RxHttp都提供了哪些请求方式,如下: 其中getpostFormpostJson上面已经讲过了,其它的同理,这里就不再讲述了。

请求方式确定了,如何添加参数或者头像信息呢?so easy!!!,只需调用addaddHeader即可,如下:

RxHttp.postForm(“http://…”) //发送表单形式的Post请求
.add(“key”,“value”) //添加请求参数,该方法可调用多次
.addHeader(“headerKey”,“headerValue”) //添加请求头参数,该方法可调用多次
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});

第二步,确定返回数据类型

上面的asString操作符代表返回String字符串类型,RxHttp提供了一系列asXXX操作符,如下:

其中,asBoolean、asInteger、asLong、asString等,很好理解,就是返回基本类型的装箱类型,。这个不就过多讲解。这里我们重点看下asClassasListasDownload这3个操作符。

asClass

显示开发中,我们返回的更多是自定义的数据类型,比如我们想得到一个Student对象,此时,我们就可以用asClass操作符,如下:

RxHttp.get(“http://…”) //发送Get请求
.asClass(Student.class) //指定返回User类型数据
.subscribe(student -> { //订阅观察者,
//请求成功,这里student就是Student对象
}, throwable -> {
//请求失败
});

asList

然而,如果我们想得到一系列Student对象呢?使用asObject显然行不通,此时就要用到asList操作符了,如下:

RxHttp.get(“http://…”) //发送Get请求
.asList(Student.class) //指定返回User类型数据
.subscribe(students -> { //订阅观察者,
//请求成功,这里students就是List对象
}, throwable -> {
//请求失败
});

注:asXXX操作符,内部会默认指定请求在Schedulers.io()线程执行

asDownload

当我们需要下载文件,就用此操作符,如下:

RxHttp.get(“http://…”) //Get请求
.asDownload(“…/rxhttp.apk”) //使用asDownload操作符,并传入存储路径
.subscribe(s -> {
//下载成功回调,s为文件存储路径
}, throwable -> {
//下载失败回调
});

更多文件操作,请查看Android 史上最优雅的实现文件上传、下载及进度的监听

第三步,订阅观察者

在上一步中,细心的你也许发现了,使用了asXXX操作符后,会返回一个Observable对象,那这个又是什么对象呢?其实它就是RxJava内部的Observable对象。

在这,可以告诉你,当我们调用asXXX操作符,拿到Observable对象后,RxHttp就已经完成了它的使命,接下来的事情都丢给了RxJava。拿到Observable对象,结合RxJava强大的操作符,我们可以做非常多的事情,比如我们想要在主线程回调观察者,如下:

RxHttp.get(“http://…”) //发送Get请求
.asList(Student.class) //指定返回User类型数据
.observeOn(AndroidSchedulers.mainThread()) //主线程回调观察者
.subscribe(students -> { //订阅观察者,
//请求成功,这里students就是List对象
}, throwable -> {
//请求失败
});

注:请求默认在Schedulers.io()线程执行,如未指定观察者所在线程,则默认在请求所在线程回调
小结
==
好了,请求三部曲就讲解结束,到这,你已经掌握了RxHttp 70% 的功能,并且掌握了RxHttp的精髓----请求三部曲,在任意请求中,就能做到以不变应万变。 本篇文章的目的在于提供一个简单的入门教程,更多功能请查看
RxHttp 让你眼前一亮的Http请求框架
线程执行,如未指定观察者所在线程,则默认在请求所在线程回调
小结
==
好了,请求三部曲就讲解结束,到这,你已经掌握了RxHttp 70% 的功能,并且掌握了RxHttp的精髓----请求三部曲,在任意请求中,就能做到以不变应万变。 本篇文章的目的在于提供一个简单的入门教程,更多功能请查看
RxHttp 让你眼前一亮的Http请求框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值