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

小编使用的是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> observable=HttpManager.newInstance().getService(BasicsApiService.class).userLogin(retrofit实例);

HttpManager.newInstance().commonRequest(ob, new BaseObserver>(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,这个库将持续维护下去

你可能感兴趣的:(基础库----------网络库的使用)