Retrofit要点

接口

GET

public interface GetOrderInfoService { 
   @GET("index.php?r=api/shop/orderDetail")
   Observable getOrderInfo(
      @Query("order_id") String order_id
   );
}

POST

public interface PostDeletePet {
    @POST("index.php?r=api/pet/del")
    @FormUrlEncoded
    Observable deletePet(
        @Field("pet_id") String pet_id
    );
}

DOWNLOAD

public interface GetNewAppService {
    @Streaming
    @GET
    Observable 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>() {
                    @Override
                    public Observable call(Token token) {
                        return RetrofitClient.getRC().create(PostLoginService.class).getWXUser();
                    }
                })
                .flatMap(new Func1>() {
                    @Override
                    public Observable call(WXModel.UserInfo userInfo) {
                        return RetrofitClient.getRC().create(PostLoginService.class).login();
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(subscriber);

异步并行

Observable initData = RetrofitClient.getRC().create(InitAppService.class).getInitData();
Observable userInfoData = RetrofitClient.getRC().create(GetUserInfoService.class).getUserInfoData();
Observable merge = Observable.merge(initData, userInfoData);
merge.subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe(subscriber);

你可能感兴趣的:(Retrofit要点)