lygttpod / RxHttpUtils

Rxjava+Retrofit封装,便捷使用

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

多个接口请求后回调回来 区分的问题!

DevXue opened this issue · comments

比如我的Activity要发起 5 次接口请求,而且是没有关联的请求, 我同时发起,然后回调回来(我的请求是在Model层发起的,Activity只管处理回调方法)

Model层发起请求 1

 RxHttpUtils
                .createApi(API.class)
                .getData(pn,ps,type)
                .compose(Transformer.<Rtn>switchSchedulers(DialogUtil.showLoading(context)))
                .subscribe(new CommonObserver<Rtn>() {

                    @Override
                    protected void onError(String errorMsg) {
                        onResponseFailed(null,errorMsg);
                    }

                    @Override
                    protected void onSuccess(Rtn bookBean) {
                        onResponseSuccess(code,bookBean);    //这里是Activity 复写的回调方法
                    }
                });


**Model层发起请求 2RxHttpUtils
                .createApi(API.class)
                .getData(pn,ps,type)
                .compose(Transformer.<Rtn>switchSchedulers(DialogUtil.showLoading(context)))
                .subscribe(new CommonObserver<Rtn>() {

                    @Override
                    protected void onError(String errorMsg) {
                        onResponseFailed(null,errorMsg);
                    }

                    @Override
                    protected void onSuccess(Rtn bookBean) {
                        onResponseSuccess(code,bookBean);  //这里是Activity 复写的回调方法
                    }
                });

**Model层发起请求 3**

RxHttpUtils
                .createApi(API.class)
                .getData(pn,ps,type)
                .compose(Transformer.<Rtn>switchSchedulers(DialogUtil.showLoading(context)))
                .subscribe(new CommonObserver<Rtn>() {

                    @Override
                    protected void onError(String errorMsg) {
                        onResponseFailed(null,errorMsg);
                    }

                    @Override
                    protected void onSuccess(Rtn bookBean) {
                        onResponseSuccess(code,bookBean);  //这里是Activity 复写的回调方法
                    }
                });

这里的RHttpUtils中的onSuccess 中写了个onResponseSuccess() 方法, 我咋我的Activity中复写这个方法  就可以接受回调回来的数据, 那么此时 我该怎么区分  是哪个接口回来的请求呢?
commented

在你的onResponseSuccess回调方法中加个参数就可以实现
比如 onResponseSuccess( type, code, bookBean),因为你的请求中已经有type参数区分了,直接回调回来就好了

好的 谢谢你!

不好意思,我一菜鸟,不太了解,请问可以写的具体些吗?

@wq1216
我个人的做法 仅供参考:

 下面这段代码比如你在Activity里头调用了 getData的方法来请求数据,
那么这个时候 你可以通过这个方法中的type参数来区分你的接口,比如这是个获取用户信息的接口,这个type 的值为“getUser” , 然后你又发起了个获取用户地址的接口为getAddressData(String type) ,此时这个type的值为“getAddress” ,那么你在回调中判断这个type即可 就知道这个那个请求的回调了,  我个人是这么搞得,又掉low···

  public void getData(int pn,int ps,type){
    RxHttpUtils
                .createApi(API.class)
                .getData(pn,ps,type)
                .compose(Transformer.<Rtn>switchSchedulers(DialogUtil.showLoading(context)))
                .subscribe(new CommonObserver<Rtn>() {

                    @Override
                    protected void onError(String errorMsg) {
                        onResponseFailed(null,errorMsg);
                    }

                    @Override
                    protected void onSuccess(Rtn bookBean) {
                        onResponseSuccess(code,bookBean);  //这里是Activity 复写的回调方法
                    }
                });

  }