android如何通过okhttp retrofit rxjava请求api接口
时间: 2023-11-11 12:02:50 浏览: 166
首先需要在项目中添加OkHttp、Retrofit和RxJava的依赖。
在build.gradle文件中添加以下代码:
```groovy
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
}
```
然后在代码中创建Retrofit实例和API接口定义:
```java
public interface ApiService {
@GET("posts")
Observable<List<Post>> getPosts();
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(new OkHttpClient())
.build();
ApiService apiService = retrofit.create(ApiService.class);
```
最后在需要请求API接口的地方,使用RxJava的Observable来发起请求:
```java
apiService.getPosts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<Post>>() {
@Override
public void onSubscribe(Disposable d) {
// 订阅事件
}
@Override
public void onNext(List<Post> posts) {
// 请求成功,处理返回结果
}
@Override
public void onError(Throwable e) {
// 请求失败,处理异常
}
@Override
public void onComplete() {
// 请求完成
}
});
```
其中,subscribeOn(Schedulers.io())表示在io线程中发起请求,observeOn(AndroidSchedulers.mainThread())表示在主线程中处理结果。具体的线程调度可以根据实际情况进行修改。
阅读全文