Novate 封装Rxjava2.0 的使用

来源:互联网 发布:淘宝账号名字怎么修改 编辑:程序博客网 时间:2024/04/30 10:31
    /**     * 发送短信验证码     */    @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);            }        });    }*/