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

235 阅读2分钟
一、为什么要封装?
1. 方便自己使用
2. 将Activity里网络请求的业务代码和UI展示的代码分离,有点类似于MVP。
3. 接口请求复用。

Retrofit Git地址

二、如何封装?
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;
	}

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