Retrofit网络请求,数据的封装(一)。

一、为什么要封装?
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 {
    /**
     * 请求头默认带的
     */
    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 {
    /**
     * 响应头,默认返回
     */
    public ResponseHead head;
    /**
     * 返回的数据,不固定
     */
    public T data;
}

这样,数据的请求和响应的封装就搞定。

你可能感兴趣的:(Retrofit网络请求,数据的封装(一)。)