在日常的Android
开发中,我们肯定使用进行网络请求。如果是初学者,自己封装一个网络请求库是有难度的,这里我分享一个简单应用的网络库——rxhttp
。之前做小项目的时候,我使用过感觉非常的友好。希望这篇文章能帮一些初学Android的小伙伴提高开发效率。
rxhttp
一个简单易用的网络请求库。
rxhttp的优势
- 30秒即可上手,学习成本极低
- 史上最优雅的支持 Kotlin 协程
- 史上最优雅的处理多个BaseUrl及动态BaseUrl
- 史上最优雅的对错误统一处理,且不打破Lambda表达式
- 史上最优雅的文件上传/下载/断点下载/进度监听,已适配Android 10
- 支持Gson、Xml、ProtoBuf、FastJson等第三方数据解析工具
- 支持Get、Post、Put、Delete等任意请求方式,可自定义请求方式
- 支持在Activity/Fragment/View/ViewModel/任意类中,自动关闭请求
- 支持全局加解密、添加公共参数及头部、网络缓存,均支持对某个请求单独设置
rxhttp的引入
必须的依赖:
//annotationProcessor无需依赖额外插件
plugins {
// kapt/ksp 选其一
// id 'kotlin-kapt'
id 'com.google.devtools.ksp' version '1.7.10-1.0.6'
}
//让IDE知道ksp生成的kotlin代码(仅使用ksp时才需要)
kotlin {
sourceSets.debug {
//如果通过productFlavors配置了多渠道,则配置 /../ksp/xxxDebug/kotlin
kotlin.srcDir("build/generated/ksp/debug/kotlin")
}
}
dependencies {
def rxhttp_version = '2.9.2'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation "com.github.liujingxing.rxhttp:rxhttp:$rxhttp_version"
// ksp/kapt/annotationProcessor 选其一
ksp "com.github.liujingxing.rxhttp:rxhttp-compiler:$rxhttp_version"
}
可选配置-Converter
//非必须,根据自己需求选择 RxHttp默认内置了GsonConverter
implementation "com.github.liujingxing.rxhttp:converter-serialization:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-fastjson:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-jackson:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-moshi:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-protobuf:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-simplexml:$rxhttp_version"
可选配置-rxJava:
implementation 'io.reactivex.rxjava3:rxjava:3.1.5'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'com.github.liujingxing.rxlife:rxlife-rxjava3:2.2.2' //管理RxJava3生命周期,页面销毁,关闭请求
截止我发博客,开源库的最新版本是2.9.2
.最新版本请查看开源库的wiki
rxhttp的使用
RxHttp.get("http://...") //第一步,确定请求类型,可以选择postForm、postJson等方法
.asString() //第二步,确定返回类型,这里返回String类型
.subscribe(s -> { //第三步,订阅观察者,第二步返回Observable对象
//请求成功
}, throwable -> {
//请求失败
});
这是一个简单的Get
请求。
Post请求表单
RxHttp.postForm("http://...") //发送表单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});
Post请求Json字符串
RxHttp.postJson("http://...") //发送Json字符串单形式的Post请求
.asString() //返回String类型
.subscribe(s -> { //订阅观察者,
//请求成功
}, throwable -> {
//请求失败
});
网友评论