写点什么

30 秒上手新一代 Http 请求神器 RxHttp,androidstudio 连接手机

用户头像
Android架构
关注
发布于: 2021 年 11 月 05 日
  • 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_8targetCompatibility 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 版本起,需要手动依赖 okhttpkapt '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 生命周期,页面销毁,关闭请求


//rxjava3implementation '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 默认内置了 GsonConverterimplementation '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'impleme


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ntation '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操作符,如下:

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
30秒上手新一代Http请求神器RxHttp,androidstudio连接手机