android 自定义数据结构,RxEasyHttp网络库自定义数据结构(七)

自定义ApiResult

本库中默认提供的是标准ApiResult.内部是靠ApiResult进行解析的,如果你的数据结构跟ApiResult不同,你可以在你的项目中继承ApiResult,然后重写getCode()、getData()、getMsg()和isOk()等方法来实现自己的需求。

本库中ApiResult如下:

public class ApiResult {

private int code;

private String msg;

private T data;

public int getCode() {

return code;

}

public void setCode(int code) {

this.code = code;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public T getData() {

return data;

}

public void setData(T data) {

this.data = data;

}

public boolean isOk() {//请求成功的判断方法

return code == 0 ? true : false;

}

}

json格式类似:

{

"code": 100010101,

"data": 内容,

"msg": "请求成功"

}

假如你的数据结构是这样的:

{

"error_code": 0,

"result": 内容,

"reason": "请求成功"

}

那么你的basebean可以写成这样

public class CustomApiResult extends ApiResult {

String reason;

int error_code;

//int resultcode;

T result;

@Override

public int getCode() {

return error_code;

}

@Override

public void setCode(int code) {

error_code = code;

}

@Override

public String getMsg() {

return reason;

}

@Override

public void setMsg(String msg) {

reason = msg;

}

@Override

public T getData() {

return result;

}

@Override

public void setData(T data) {

result = data;

}

/* @Override

public boolean isOk() {

return error_code==200;//如果不是0表示成功,请重写isOk()方法。

}*/

}

那么你的网络请求可以这样写

EasyHttp.get(url)

.readTimeOut(30 * 1000)//局部定义读超时

.writeTimeOut(30 * 1000)

.connectTimeout(30 * 1000)

//.cacheKey(this.getClass().getSimpleName()+"11")

//.cacheMode(CacheMode.CACHEANDREMOTE)

//.cacheMode(CacheMode.ONLYREMOTE)

//.headers("","")//设置头参数

//.params("name","张三")//设置参数

//.addInterceptor()

//.addConverterFactory()

//.addCookie()

//.timeStamp(true)

.baseUrl("http://apis.juhe.cn")

.params("phone", "手机号")

.params("dtype", "json")

.params("key", "5682c1f44a7f486e40f9720d6c97ffe4")

.execute(new CallBackProxy, ResultBean>(new SimpleCallBack() {

@Override

public void onError(ApiException e) {

//请求错误

}

@Override

public void onSuccess(ResultBean response) {

//请求成功

}

}) {

});

这种写法会觉得有点长,CallBackProxy的泛型参数每次都需要填写,其中CustomApiResult是继承ApiResult的,CustomApiResult相当于项目的basebean,对于一个实际项目来讲,basebean是固定的,所以我们可以继续封装这个方法,根据需要一般只需要封装get和post请求就可以了。

public static Subscription customExecute(CallBack callBack) {

return execute(new CallBackProxy, T>(callBack) {

});

}

通过以上改造,再次调用时直接使用CallBack,不用再关注CallBackProxy,是不是明显简单很多了,具体请看代码github Demo!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值