基础库----------网络库的使用
小编使用的是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,这个库将持续维护下去