30秒上手新一代Http请求神器RxHttp,IDEA太强悍了

     sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies {
implementation ‘com.github.liujingxing.rxhttp:rxhttp:2.6.0’
implementation ‘com.squareup.okhttp3:okhttp:4.9.0’ //rxhttp v2.2.2版本起,需要手动依赖okhttp
kapt ‘com.github.liujingxing.rxhttp:rxhttp-compiler:2.6.0’ //生成RxHttp类,纯Java项目,请使用annotationProcessor代替kapt
}


**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请求的操作符,分别是`postForm`和`postJosn`,此时,我们就可以这样发送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]( )都提供了哪些请求方式,如下: ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/30684376f1a04c02b5694d647ee8f5d8~tplv-k3u1fbpfcp-zoom-1.image) 其中`get`、`postForm`、`postJson`上面已经讲过了,其它的同理,这里就不再讲述了。

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

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


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

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

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/231eec1aad3b40d3a48c560051af72e7~tplv-k3u1fbpfcp-zoom-1.image) 其中,asBoolean、asInteger、asLong、asString等,很好理解,就是返回基本类型的装箱类型,。这个不就过多讲解。这里我们重点看下`asClass`、`asList`、`asDownload`这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请求

最后我想说

为什么很多程序员做不了架构师?
1、良好健康的职业规划很重要,但大多数人都忽略了
2、学习的习惯很重要,持之以恒才是正解。
3、编程思维没能提升一个台阶,局限在了编码,业务,没考虑过选型、扩展
4、身边没有好的架构师引导、培养。所处的圈子对程序员的成长影响巨大。

金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

30秒上手新一代Http请求神器RxHttp,IDEA太强悍了

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》

353)]

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
上一篇:The database provider attempted to register an implementation of the 'IRelationalTypeMappingSou


下一篇:Android Studio配置文件build.gradle引用libs下面的jar,arr,以及开源库