30秒上手新一代Http请求神器RxHttp(1),GitHub已标星16k

任意请求,任意返回数据类型,皆遵循请求三部曲

任意请求,任意返回数据类型,皆遵循请求三部曲

任意请求,任意返回数据类型,皆遵循请求三部曲

gradle依赖

  • OkHttp 3.14.x以上版本, 最低要求为API 21,如你想要兼容21以下,请依赖OkHttp 3.12.x,该版本最低要求 API 9

  • asXxx方法内部是通过RxJava实现的,而RxHttp 2.2.0版本起,内部已剔除RxJava,如需使用,请自行依赖RxJava并告知RxHttp依赖的Rxjava版本

1、必选

jitpack添加到项目的build.gradle文件中,如下:

allprojects {
repositories {
maven { url “https://jitpack.io” }
}
}

注:RxHttp 2.6.0版本起,已全面从JCenter迁移至jitpack

//使用kapt依赖rxhttp-compiler时必须
apply plugin: ‘kotlin-kapt’

android {
//必须,java 8或更高
compileOptions {
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请求的操作符,分别是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 -> {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

文末

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家

这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

【视频教程】

天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

img-OUPeoaRd-1712320466039)]

天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值