rxjava 结合okhttp 连续请求

来源:互联网 发布:php记账系统源码 编辑:程序博客网 时间:2024/05/16 07:31

rxjava 结合okhttp  连续请求,第一个请求成功后拿到服务器返回的数据,作为第二个请求的参数,继续进行第二次请求

/** * 获取船公司信息数据 */@Overridepublic void getCompanyData(Dialog dialog, final String mmsi, final String ywjc, final OnLoadComapnyDataListenner onLoadComapnyDataListenner) {    /**     *      new Func1<ResponseResult<CompanyData>, ResponseResult<CompanyData>>     *     第一个参数是查询出来的船公司的具体数据的类型     *     这里第二个参数是要返回的数据类型,也就是subscriber的请求成功的类型     *     也就是说 传进去第一个参数类型的数据,将它转换成 第二个参数类型的数据返回出去     */    Observable<ResponseResult<CompanyData>> observable = OkHttpUtils.getRetrofit().create(ApiService.class).loadStaticData(mmsi)            .flatMap(new Func1<ResponseResult<ShipStaticInfo>, Observable<ResponseResult<CompanyData>>>() {                @Override                public Observable<ResponseResult<CompanyData>> call(ResponseResult<ShipStaticInfo> shipStaticInfoResponseResult) {                    return OkHttpUtils.getRetrofit().create(ApiService.class).getCompanyData(shipStaticInfoResponseResult.getData().getJyr(), ywjc);                }            }).map(new Func1<ResponseResult<CompanyData>, ResponseResult<CompanyData>>() {                @Override                public ResponseResult<CompanyData> call(ResponseResult<CompanyData> companyDataResponseResult) {                    return companyDataResponseResult;//这里不做操作直接返回在观察者中进行数据处理把数据返回给订阅者(即观察者)                }            });    Subscriber<ResponseResult<CompanyData>> subscriber = new DialogSubscriber<ResponseResult<CompanyData>>(dialog, true) {        @Override        public void onSuccess(ResponseResult<CompanyData> companyDataResponseResult) {            switch (companyDataResponseResult.getResult()) {                case 1:                    onLoadComapnyDataListenner.onSuccess(companyDataResponseResult.getData());                    break;                case 0:                    onLoadComapnyDataListenner.onFailure(companyDataResponseResult.getMsg());                    break;                case -1:                    onLoadComapnyDataListenner.onFailure(companyDataResponseResult.getMsg());                    break;            }        }        @Override        public void onFailure(String msg) {            onLoadComapnyDataListenner.onFailure(msg);        }    };    toSubscribe(observable, subscriber);}/** * 公司信息接口回调 */public interface OnLoadComapnyDataListenner {    void onSuccess(CompanyData data);    void onFailure(String err);}

原创粉丝点击