当前位置: 首页 > news >正文

app逆向-⽹络请求库rxjava2

文章目录

    • 一、前言
    • 二、安装
    • 三、GET请求实现
    • 四、POST请求实现

一、前言

RxJava 2 是一个流行的 Java 库,用于使用可观察序列组合异步和基于事件的程序。它是原始 RxJava 库的重新实现,旨在更高效并且更适合于 Java 8 及更高版本。

RxJava 2 的主要特性包括:

Observable(可观察对象):表示随时间推移可以被观察到的数据流或事件。Observable 可以发出零个或多个项目,并且可以成功地终止或以错误终止。

Observer(观察者):消费 Observable 发出的项目。它通常定义了处理发出的项目、完成事件和错误的方法。

操作符:RxJava 提供了大量的操作符,用于处理、转换和组合 Observable 发出的项目,以便创建更复杂的数据流处理逻辑。

二、安装

// rxjava2
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.20'

三、GET请求实现

接口定义

// rxjava get 请求
@GET("api/users")
// RxUserList 请求函数名,page请求参数
Observable<UserPageParse> RxUserList(@Query("page") Integer page);

逻辑实现

// rxjava2 get 请求
private void Rxjava2GetDemo(){String baseUrl = "https://reqres.in/";Retrofit mRetrofit = new Retrofit.Builder().baseUrl(baseUrl)// 将字符串转换成java对象.addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();mRetrofit.create(ApiService.class).RxUserList(2).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<UserPageParse>() {@Overridepublic void onSubscribe(@NonNull Disposable d) {tvContent.setText("请求中");}@Overridepublic void onNext(@NonNull UserPageParse userPageParse) {// 处理请求成功的响应Integer page = userPageParse.page;Integer total = userPageParse.total;Integer total_pages = userPageParse.total_pages;// 在这里处理响应数据Log.d(TAG, "异步请求成功" + ',' + page + ',' + total + ',' + total_pages);}@Overridepublic void onError(@NonNull Throwable e) {tvContent.setText("异步请求失败");}@Overridepublic void onComplete() {tvContent.setText("完成");}});
};

四、POST请求实现

接口定义

// rxjava post 请求
@POST("api/users")
// RxUserList 请求函数名,page请求参数
@FormUrlEncoded
Observable<UserParse> RxCreateUser(@Field("name") String name, @Field("job") String job);

逻辑实现

// rxjava2 post 请求
private void Rxjava2PostDemo(){String baseUrl = "https://reqres.in/";Retrofit mRetrofit = new Retrofit.Builder().baseUrl(baseUrl)// 将字符串转换成java对象.addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();mRetrofit.create(ApiService.class).RxCreateUser("admin", "java").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<UserParse>() {@Overridepublic void onSubscribe(@NonNull Disposable d) {tvContent.setText("请求中");}@Overridepublic void onNext(@NonNull UserParse UserParse) {// 处理请求成功的响应String name = UserParse.name;String job = UserParse.job;String id = UserParse.id;String createdAt = UserParse.createdAt;// 在这里处理响应数据Log.d(TAG, "异步请求成功" + ',' + name + ',' + job + ',' + id + ',' + createdAt);}@Overridepublic void onError(@NonNull Throwable e) {tvContent.setText("异步请求失败");}@Overridepublic void onComplete() {tvContent.setText("完成");}});
};
http://www.lryc.cn/news/300090.html

相关文章:

  • Spring Boot 笔记 007 创建接口_登录
  • java数据结构与算法刷题-----LeetCode594. 最长和谐子序列
  • 数据分析基础之《pandas(6)—高级处理》
  • IOS破解软件安装教程
  • [缓存] - 1.缓存共性问题
  • Python爬虫——解析库安装(1)
  • 中科大计网学习记录笔记(十一):CDN
  • [缓存] - 2.分布式缓存重磅中间件 Redis
  • 1191. 家谱树(拓扑排序,模板题)
  • CSS之BFC
  • 2024 年合并 PDF 文件的免费 PDF 合并软件榜单
  • Python教程56:海龟画图turtle画kitty猫
  • c入门第十篇——指针入门
  • pwn学习笔记(3)ret2syscall
  • React18原理: 生命周期中特别注意事项
  • 【C语言】Linux内核bind系统调用代码
  • Ubuntu下Anaconda+PyCharm搭建PyTorch环境
  • 酷开科技荣获“消费者服务之星”称号后的未来展望
  • UVA1449 Dominating Patterns 题解
  • 【C语言】数据结构#实现堆
  • AES加密中的CBC和ECB
  • 【C++】类和对象(四)
  • XGB-5: DART Booster
  • HiveSQL——不使用union all的情况下进行列转行
  • Python环境下基于指数退化模型和LSTM自编码器的轴承剩余寿命预测
  • 无人机竞赛视觉算法开发流程开源计划(询问大家意见)
  • DMA直接内存访问,STM32实现高速数据传输使用配置
  • Web安全研究(六)
  • python3 中try 异常调试 raise 异常抛出
  • Java中的序列化是什么?如何实现对象的序列化和反序列化?请解释Serializable接口的作用是什么?请解释transient关键字的作用是什么?为什么会使用它?