接口
GET
public interface GetOrderInfoService {
@GET("index.php?r=api/shop/orderDetail")
Observable<OrderInfo> getOrderInfo(
@Query("order_id") String order_id
);
}
POST
public interface PostDeletePet {
@POST("index.php?r=api/pet/del")
@FormUrlEncoded
Observable<BaseModel> deletePet(
@Field("pet_id") String pet_id
);
}
DOWNLOAD
public interface GetNewAppService {
@Streaming
@GET
Observable<ResponseBody> download(
@Url String fileUrl
);
}
回调
单个
RetrofitClient.getRC().create(CheckUpdateService.class).getUpdateData() // 生成observer
.subscribeOn(Schedulers.io()) // 任务执行在io线程
.observeOn(AndroidSchedulers.mainThread()) // 结果订阅在主线程
.compose(bindUntilEvent(ActivityEvent.DESTROY)) // 与Activity生命周期绑定
.subscribe(subscriber); // subscriber是订阅者
顺序执行
RetrofitClient.getRC().create(PostLoginService.class).getWXToken()
.subscribeOn(Schedulers.io())
.flatMap(new Func1<Token, Observable<WXModel.UserInfo>>() {
@Override
public Observable<WXModel.UserInfo> call(Token token) {
return RetrofitClient.getRC().create(PostLoginService.class).getWXUser();
}
})
.flatMap(new Func1<WXModel.UserInfo, Observable<User>>() {
@Override
public Observable<User> call(WXModel.UserInfo userInfo) {
return RetrofitClient.getRC().create(PostLoginService.class).login();
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
异步并行
Observable<InitModel> initData = RetrofitClient.getRC().create(InitAppService.class).getInitData();
Observable<UserSee> userInfoData = RetrofitClient.getRC().create(GetUserInfoService.class).getUserInfoData();
Observable<BaseModel> merge = Observable.merge(initData, userInfoData);
merge.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);