美文网首页
Retrofit要点

Retrofit要点

作者: 猫侠 | 来源:发表于2016-12-02 10:34 被阅读0次

接口

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);

相关文章

网友评论

      本文标题:Retrofit要点

      本文链接:https://www.haomeiwen.com/subject/mudxmttx.html