Novate 封装Rxjava2.0 的使用

    /**
     * 发送短信验证码
     */
    @OnClick(R.id.send_code)
    void sendCodeClick(){
        //获取验证码


//        parameters.put("token", "5cce476d-ce9e-49c1-8f94-b6abf84325c7");
        parameters.put("mobile", "13721413520");
//        网络请求
        hManager.sendCodeRequest(parameters);
//        回调函数
        hManager.successCallBack(new RequestCallBack() {

            @Override
            public void successCallBack(Object obj) {
                Log.e("成功222",obj.toString());
            }

            @Override
            public void erroeCallBack(Exception e) {
                Log.e("错误",e.getMessage());
            }
        });
    }

    public void sendCodeRequest(Map<String, Object> parameter){
//        BaseApiService api = novate.create(BaseApiService.class);
//        parameters.put("token", "5cce476d-ce9e-49c1-8f94-b6abf84325c7");
        if(novate == null)
        {
            novate = new Novate.Builder(this.mContext)
                    .addParameters(parameter)
                    .connectTimeout(5)
                    .baseUrl(ApiConfig.BASE_URL)
                    .addLog(true)
                    .build();
        }

//        api.cli/v1/society/vehicle/onsite
        novate.get("api/v1/lib/third/sms/send", parameter, new MyBaseSubscriber<ResponseBody>(LoginActivity.this.mContext) {
            @Override
            public void onError(Throwable e) {
                Log.e("错误码",e.getCode() + "");
                Log.e("信息",e.getMessage());
                Toast.makeText(LoginActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNext(ResponseBody responseBody) {
                try {
                    if (responseBody == null){//服务器响应内容为空
                        Log.e("响应","没有内容");
                    }else{
                        String jstr = new String(responseBody.bytes());

                        ObjectMapper mapper = new ObjectMapper();
//        当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,
//        因为,例如json里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略
                        mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

                        //从json映射到java对象,得到country对象后就可以遍历查找,下面遍历部分内容,能说明问题就可以了
                        ListModel testJson = mapper.readValue(jstr, ListModel.class);
                        Log.e("11",jstr);
                        try {
                            // 需要注意的是这里的Map实际为一个LikedHashMap,即链式哈希表,可以按照读入顺序遍历
                            JsonNode node = mapper.readTree(jstr);

                            List<JsonNode> nodes = node.findValues("content");

                            for(JsonNode n:nodes) {
                                Long vehicleId = n.findValue("vehicle").findValue("id").asLong();
                                Log.e("id", "" + n.findValue("id").asLong());
                            }

//                        System.out.println(map.get("name") + ":" + map.get("age"));
//                       for (Object k : map.keySet()){
//                            Log.e("map","key = " + k + "---value" + map.get(k));
//                       }
                        } catch (JsonParseException e) {
                            e.printStackTrace();
                        } catch (JsonMappingException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        });
    }

    /**
     * 在RxJava中主要有4个角色:

     Observable
     Subject
     Observer
     Subscriber
     Observable和Subject是两个“生产”实体,Observer和Subscriber是两个“消费”实体。说直白点Observable对应于观察者模式中的被观察者,而Observer和Subscriber对应于观察者模式中的观察者。Subscriber其实是一个实现了Observer的抽象类,后面我们分析源码的时候也会介绍到。Subject比较复杂,以后再分析。

     上一篇文章中我们说到RxJava中有个关键概念:事件。观察者Observer和被观察者Observable通过subscribe()方法实现订阅关系。从而Observable 可以在需要的时候发出事件来通知Observer。
     */
    /*
    private void rxJavaClick(){
        Observable.create(new Observable.OnSubscribe<Integer>(){
            @Override
            public void call(Subscriber<? super Integer> subscriber) {
                for (int i = 0; i < 5; i++) {
                    subscriber.onNext(i);
                }
                subscriber.onCompleted();
            }
        }).subscribe(new Observer<Integer>() {
            @Override
            public void onCompleted() {
                Log.e("完成","执行的回调");
            }

            @Override
            public void onError(java.lang.Throwable e) {
                Log.e("错误","错误信息");
            }

//            @Override
//            public void onError(Throwable e) {
//                Log.e("错误","错误信息");
//            }

            @Override
            public void onNext(Integer integer) {
                Log.e("执行者","执行次数" + integer);
            }
        });
    }
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值