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() {
         }
       })
 }
}

网络请求结果截图

RxJava+Retrofit实现网络请求封装的方法 

Demo源代码

https://github.com/cxyzy1/rxjava_retrofit_demo

来源:https://www.jianshu.com/p/019bc0e794d6

标签:RxJava,Retrofit,网络请求
0
投稿

猜你喜欢

  • 在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
  • Java数据结构学习之栈和队列

    2022-02-21 11:32:45
  • Java设计模式之备忘录模式(Memento模式)介绍

    2023-08-23 14:26:42
  • Android App获取屏幕旋转角度的方法

    2021-12-26 10:42:19
  • 原生Java操作兔子队列RabbitMQ

    2022-03-12 21:27:25
  • java中如何判断JSONObject是否存在某个Key

    2022-06-10 15:07:24
  • 基于Android6.0实现弹出Window提示框

    2023-01-12 05:23:25
  • SpringMVC数据响应详细介绍

    2023-09-24 04:12:41
  • C#面向对象特征的具体实现及作用详解

    2023-11-14 06:43:39
  • SpringBoot 集成 activiti的示例代码

    2023-01-22 10:22:03
  • 超全MyBatis动态代理详解(绝对干货)

    2023-11-14 02:28:19
  • Android Handler使用案例详解

    2021-08-17 06:46:32
  • c# wpf如何附加依赖项属性

    2023-01-09 05:05:56
  • 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
  • asp之家 软件编程 m.aspxhome.com