美文网首页
rxjava--AndroidNetworking使用

rxjava--AndroidNetworking使用

作者: NullPoint3Exce | 来源:发表于2019-01-23 23:21 被阅读0次

    配置

      compile 'com.amitshekhar.android:rx2-android-networking:1.0.0'
    

    自定义MyApplication类里添加

     AndroidNetworking.initialize(getApplicationContext());
    

    结合rxjava使用, 简单方便

    {
            Rx2AndroidNetworking
                    .get("http://www.tngou.net/api/food/list")
                    .addQueryParameter("rows", 1 + "")
                    .build()
                    .getObjectObservable(FoodList.class) // 发起获取食品列表的请求,并解析到FootList
                    .subscribeOn(Schedulers.io())        // 在io线程进行网络请求
                    .observeOn(AndroidSchedulers.mainThread()) // 在主线程处理获取食品列表的请求结果
                    .doOnNext(new Consumer<FoodList>() {
                        @Override
                        public void accept(@NonNull FoodList foodList) throws Exception {
                            // 先根据获取食品列表的响应结果做一些操作
                            Log.e(TAG, "accept: doOnNext :" + foodList.toString());
                            mRxOperatorsText.append("accept: doOnNext :" + foodList.toString()+"\n");
                        }
                    })
                    .observeOn(Schedulers.io()) // 回到 io 线程去处理获取食品详情的请求
                    .flatMap(new Function<FoodList, ObservableSource<FoodDetail>>() {
                        @Override
                        public ObservableSource<FoodDetail> apply(@NonNull FoodList foodList) throws Exception {
                            if (foodList != null && foodList.getTngou() != null && foodList.getTngou().size() > 0) {
                                return Rx2AndroidNetworking.post("http://www.tngou.net/api/food/show")
                                        .addBodyParameter("id", foodList.getTngou().get(0).getId() + "")
                                        .build()
                                        .getObjectObservable(FoodDetail.class);
                            }
                            return null;
    
                        }
                    })
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer<FoodDetail>() {
                        @Override
                        public void accept(@NonNull FoodDetail foodDetail) throws Exception {
                            Log.e(TAG, "accept: success :" + foodDetail.toString());
                            mRxOperatorsText.append("accept: success :" + foodDetail.toString()+"\n");
                        }
                    }, new Consumer<Throwable>() {
                        @Override
                        public void accept(@NonNull Throwable throwable) throws Exception {
                            Log.e(TAG, "accept: error :" + throwable.getMessage());
                            mRxOperatorsText.append("accept: error :" + throwable.getMessage()+"\n");
                        }
                    });
    
        }
    
    

    相关文章

      网友评论

          本文标题:rxjava--AndroidNetworking使用

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