美文网首页Android开发
Retrofit网络请求,数据的封装(一)。

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

作者: Sky_Blue | 来源:发表于2018-01-24 16:13 被阅读1081次
    一、为什么要封装?
    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;
    }
    

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

    相关文章

      网友评论

        本文标题:Retrofit网络请求,数据的封装(一)。

        本文链接:https://www.haomeiwen.com/subject/eluuaxtx.html