一、为什么要封装?
1.方便自己使用
2.将Activity里网络请求的业务代码和UI展示的代码分离,有点类似于MVP。
3.接口请求复用。
二、如何封装?
1.分析需求,根据公司接口做相应的处理。
2.现在大多都是使用Json请求和响应,我只提供Json封装的思路。
三、开始封装,首先关联相应的类库
compile 'com.google.code.gson:gson:2.8.2' // 采用Gson解析
compile 'com.squareup.retrofit2:retrofit:2.3.0' // retrofit的关键库
compile 'com.squareup.retrofit2:adapter-rxjava2:+'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' // 引入Rxjava和RxAndroid
四、请求和响应数据的分析。
1.请求后台接口的数据格式
{
// 1. 具体的数据
"data": {
"loginName": "135****5219",
"loginPass": "12***56"
},
// 2. 公司接口的公共请求头
"head": {
"_channel_": 1,
"_platform_id_": 1,
"_request_time_stamp_": 1516780484149
}
}
2.后台响应的数据格式
{
"data": {
},
// 固定响应
"head": {
"bcode": "1",
"bmessage": "Success!",
"code": "1",
"message": "Success!",
"responseTime": "1516780484695"
}
}
从请求和响应的数据分析,都有公共固定的请求参数,但data是不确定的,而且有可能是数组、字符串等等。
因为data是不固定的所以采用泛型设计最好。
五、请求JavaBean的封装
/**
* ================================================================
* 描述:请求头
* ================================================================
*/
public class RequestHead {
public long _request_time_stamp_;
public int _channel_ = 1;
public int _platform_id_ = 1;
}
/**
* 请求数据的封装
*/
public class RequestBean<T> {
/**
* 请求头默认带的
*/
public RequestHead head;
/**
* 请求的数据,不固定
*/
public T data;
public RequestBean() {
this(null);
}
public RequestBean(T data) {
this.data = data;
this.head = new RequestHead();
}
}
六、响应数据的封装,和请求思路一样
/**
* 响应头,默认返回
*/
public class ResponseHead {
public String bcode;
public String bmessage;
public String code;
public String message;
public String responseTime;
}
/**
* 响应的封装
*/
public class ResponseBean<T> {
/**
* 响应头,默认返回
*/
public ResponseHead head;
/**
* 返回的数据,不固定
*/
public T data;
}
这样,数据的请求和响应的封装就搞定。
网友评论