首先,你需要在你的依赖
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
compile 'io.reactivex:rxandroid:1.0.1'
,然后添加RxAndroid和RxJava适配器需要电话适配器注册到改造声明
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(myBaseurl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
然后你就可以改变你的服务接口返回类型从呼叫到可观察
public interface MyAPIService {
@POST("user")
Call<User> getUser();
@POST("user")
Observable<Response<User>> getUserWithRxJava();
@POST("user_friends")
Observable<Response<List<User>>> getUserFriends();
}
并且t他是链接调用
myService.getUserWithRxJava()
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Response<User>, Observable<Response<List<User>>>>() {
@Override
public Observable<List<Home>> call(Response<User> responseUser) {
// You can also use responseUser.code to get the response code
// but isSuccess() function will return true if the code
// is in the range [200..300)
if (responseUser.isSuccess()) {
return myService.getUserFriends();
} else {
// You can also use Observable.empty() if you want to ignore unsuccessful response
return Observable.error(myThrowable);
}
}
})
.subscribe(new Subscriber<Response<List<User>>>() {
@Override
public void onCompleted() {
// TODO Completed
}
@Override
public void onError(Throwable e) {
// TODO Handle the error
}
@Override
public void onNext(Response<List<User>> friendListResponse) {
// TODO do something with the data
// To get the serialized data you can use friendListResponse.body();
}
});
什么改装版本? –
@NikoYuwono 2.0.0-β2 – Orbit
检查我的答案 –