美文网首页
基础库----------网络库的使用

基础库----------网络库的使用

作者: 就这样风流 | 来源:发表于2018-06-04 18:17 被阅读45次

    小编使用的是newBaseLib开源库, 原项目GitHub地址:传送门
    在使用这个网络库之前,需要了解rxjava、retrofit以及okhttp相关知识,只有了解事情的本质,才能更好的应用,不然就是扯淡


    Rjava相关 戳这里☞传送门
    Retrofit相关 戳这里☞传送门
    Okhttp相关 戳这里☞传送门
    Okhttp拦截器 戳这里☞传送门


    1.在Application的onCreate()方法中添加

    HttpConfig httpConfig=newHttpConfig.HttpConfigBuilder()
    
    .setmBaseUrl("请求地址的域名(域名、域名、域名,重要的事情说三遍)")
    
    .setUseCustGson(true).build(); // 这里的域名指的是 http://www.baidu.com/而不是http://www.baidu.com/index?....
    

    更多配置参考

    2.在说如何获取网络请求之前需要前提说明下,服务器响应的json结构体,为什么在这里要说明这个json的结构体呢?其实原因都很简单,不规范的json结构体,往往在使用各种库的时候,反而又回到最原始的解析方式,让开发效率降低很多,那那种属于比较好处理的或者说通用的json结构体尼?LOOK↓↓↓↓↓↓↓

    {
        "data": {
            //这里真正的跟业务有关系的数据
        },
        "code": 200,
        "msg": "请求成功"
        }
    

    用这种方式的json结构体的话全程都是基础库为你全程解析,你只需要建立好Bean类即可,请求实例

    Observable<Result<String>> observable=HttpManager.newInstance().getService(BasicsApiService.class).userLogin(retrofit实例);
    
    HttpManager.newInstance().commonRequest(ob, new BaseObserver<Result<你建立的bean>>(AppUtils.getContext()) {
                        @Override
                        public void onSubscribe(Disposable d) {
                        }
                        @Override
                        public void onComplete() {
                        }
                        @Override
                        public void onSuccess(Result<你建立的bean> stringResult) {
                                //请求成功 code码为200的时候 触发
                        }
                        @Override
                        public void onFail(ApiException e) {
                            //请求失败 code码不为200的时候触发
                        }
                    });
    
    

    这样是不是更简单,结构体也很清晰,也不会因为返回类型不一致导致出现问题
    3.下来再说说,自由发挥协议的json结构,那什么叫自由发挥的json协议尼?Look↓↓↓↓↓↓看看是不是遇到过这种json协议

    {
        "data": {
            "name": "你猜",
            "age": "29"
        },
        "code": 200,
        "msg": "请求成功"
    }
    

    {
        "data": [{
            "name": "你猜",
            "age": "29"
        }],
        "code": 200,
        "msg": "请求成功"
    }
    

    什么鬼~~~一会array一会obj,我会凌乱的,不过也不用担心,基础库也为这种情况做了处理
    在Application的onCreate()方法中添加

    HttpConfig httpConfig=new HttpConfig.HttpConfigBuilder()
    .setmBaseUrl("请求地址的域名(域名、域名、域名,重要的事情说三遍)") 
    .setUseCustGson(false)//这里特别注意 需要用到GSON的解析器,而不是自定义的解析器
    .build(); 
    

    // 这里的域名指的是 http://www.baidu.com/而不是 http://www.baidu.com/index?....
    更多配置参考
    在Activity或fragment中使用

    Observable ob=HttpManager.newInstance().getService(BasicsApiService.class).userLogin("dsfdsfdsfds");
    HttpManager.newInstance().commonRequest(ob), new Observer() {
    
                     @Override
                    public void onError(Throwable e) {
                        //请求失败后 服务器响应
                         Log.e("失败","-----"+e.getMessage());
                     }
    
                     @Override
                      public void onComplete() {
                           
                       }
    
                      @Override
                      public void onSubscribe(Disposable d) {
    
                       }
    
                       @Override
                       public void onNext(Object o) {
                          //请求成功后 服务器响应
                      }
                  });
    

    到此两种请求方式说完了,对于各种业务需求的小伙伴来说,需要关注的是HttpConfig类的配置,如果有问题再github上提交bug,这个库将持续维护下去

    相关文章

      网友评论

          本文标题:基础库----------网络库的使用

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