自已的网络请求类(按功能进行分类):
public class UserAPI extends BaseAPI {
private final String URL_GET_USER_LIST = Contants.BASE_URL + "/";
private final String URL_GET_USER_DETAIL = Contants.BASE_URL + "/";
public <T> MatchAPI(Context context, APICallback<T> callback) {
super(context, callback);
}
/**
* 获取用户列表,GET方式
*/
public void getUserList(int apiId) {
requestData(apiId, Request.Method.GET, URL_GET_USER_LIST, null);
}
/**
* 获取用户详情,POST方式
*/
public void getUserDetail(int apiId, long userId) {
requestData(apiId, URL_GET_USER_DETAIL, BaseRequest.BODY_TYPE_PROTO, genUserDetailBody(userId));
}
private byte[] genUserDetailBody(long userId) {
return null;
}
@Override
protected <T> T parseData(ResponseInfo info) throws Exception {
switch (info.apiId) {
case Contants.API_ID_GET_USER_LIST:
return (T) parseUserList(info.data);
}
return null;
}
private ArrayList<User> parseUserList(Any data) throws InvalidProtocolBufferException {
ArrayList<User> users = new ArrayList<>();
if (data != null) {
//解析网络数据
}
return matchGroups;
}
}
所有网络请求API的父类:
public abstract class BaseAPI implements BaseRequest.RequestCallback {
protected final int FAILURE = -1;
protected final int SUCCESS = 0;
private final String CONTENT_TYPE = "Content-Type";
private final String TYPE_ENCRYPT = "secure/protobuf";
protected APICallback callback;
protected Connector connector;
protected Context context;
public BaseAPI(Context context, APICallback callback) {
this.callback = callback;
this.context = context.getApplicationContext();
connector = Connector.getConnector(this.context);
}
/**
* 子类直接调用此方法请求服务器数据
*
* @param method 请求方式, GET方式: Request.Method.GET, POST方式: Request.Method.POST
* @param url 服务器url
* @param params 请求参数
*/
protected final void requestData(int apiId, int method, String url, Map<String, String> params) {
connector.execute(apiId, method, url, getHeaders(), params, this);
}
/**
* 子类直接调用此方法请求服务器数据
*
* @param bodyType