RxJava+Retrofit实现网络请求封装的方法
作者:程序园中猿 时间:2023-08-13 19:39:13
简要介绍
Retrofit是当前应用非常广泛的网络请求框架,通常结合RxJava来进行网络请求,本文将展示一个采用RxJava+Retrofit的网络请求demo.
集成步骤
1、app工程的build.gradle中添加依赖
//retrofit2
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
//rxjava2
implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
//配合Rxjava2 使用
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
2、在AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.INTERNET"/>
3、添加数据类Task
data class Task(var id: Int, var name: String?)
4、 添加网络请求类NetworkService
import io.reactivex.Observable;
import retrofit2.http.GET;
public interface NetworkService {
@GET("data.json")
Observable<Task> query();
}
5、activity中调用
class MainActivity : AppCompatActivity() {
private val BASE_URL = "https://raw.githubusercontent.com/cxyzy1/rxjava_retrofit_demo/master/"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
queryData()
}
private fun queryData() {
//创建Retrofit对象
val retrofit = Retrofit.Builder().baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
//获取UserMsgService对象
val networkService = retrofit.create(NetworkService::class.java)
networkService.query()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<Task> {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(task: Task) {
contentTv.text = task.toString()
}
override fun onError(e: Throwable) {
Log.v("", e.message)
}
override fun onComplete() {
}
})
}
}
网络请求结果截图
Demo源代码
https://github.com/cxyzy1/rxjava_retrofit_demo
来源:https://www.jianshu.com/p/019bc0e794d6
标签:RxJava,Retrofit,网络请求
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
在Winform和WPF中注册全局快捷键实现思路及代码
2023-03-13 23:00:25
Android 保存WebView中的图片示例
2021-10-05 21:57:05
基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码
2021-08-20 20:07:46
解析mybatis-plus中的resultMap简单使用
2021-09-03 03:53:06
![](https://img.aspxhome.com/file/2023/1/132211_0s.png)
Java数据结构学习之栈和队列
2022-02-21 11:32:45
![](https://img.aspxhome.com/file/2023/3/61593_0s.png)
Java设计模式之备忘录模式(Memento模式)介绍
2023-08-23 14:26:42
![](https://img.aspxhome.com/file/2023/8/58438_0s.png)
Android App获取屏幕旋转角度的方法
2021-12-26 10:42:19
![](https://img.aspxhome.com/file/2023/1/91701_0s.gif)
原生Java操作兔子队列RabbitMQ
2022-03-12 21:27:25
![](https://img.aspxhome.com/file/2023/9/70559_0s.png)
java中如何判断JSONObject是否存在某个Key
2022-06-10 15:07:24
![](https://img.aspxhome.com/file/2023/8/119148_0s.png)
基于Android6.0实现弹出Window提示框
2023-01-12 05:23:25
![](https://img.aspxhome.com/file/2023/5/106035_0s.jpg)
SpringMVC数据响应详细介绍
2023-09-24 04:12:41
![](https://img.aspxhome.com/file/2023/8/58568_0s.png)
C#面向对象特征的具体实现及作用详解
2023-11-14 06:43:39
SpringBoot 集成 activiti的示例代码
2023-01-22 10:22:03
![](https://img.aspxhome.com/file/2023/8/62238_0s.png)
超全MyBatis动态代理详解(绝对干货)
2023-11-14 02:28:19
![](https://img.aspxhome.com/file/2023/2/59082_0s.jpg)
Android Handler使用案例详解
2021-08-17 06:46:32
c# wpf如何附加依赖项属性
2023-01-09 05:05:56
![](https://img.aspxhome.com/file/2023/5/88415_0s.png)
utf8编码检测方法分享
2023-05-18 12:34:27
MyBatis中使用$和#所遇到的问题及解决办法
2023-03-25 12:27:55
C#控制图像旋转和翻转的方法
2023-11-26 08:25:08
Android Studio的中文乱码问题解决方法
2023-06-05 04:48:14
![](https://img.aspxhome.com/file/2023/8/137508_0s.gif)