对android 中网络请求的分层改造
目的:做到业务数据相分离
1、http的请求层(数据通信层)
主要功能是对web服务器的请求,包括一些Http Request和Http Response的解析和修改,并且提供调试工具类,方便打印对应请求的Request和返回到Response。
伪代码:
//BaseDispatch 在中间适配伪代码定义
//dispath方法会有一个K类型来定义唯一,以便调用之后方便业务层进行接收
public class HttpRequestManager{
....
单例
....
private BaseDispatch mBaseDispatch;
//url:请求url
public void request(String url,Map<String,Object> params,K id){
T<HttpResponse> response = [http]请求(url,params);
if(mBaseDispatch != null){
mBaseDispatch.dispatch(response,id);
}
}
//设置中间层适配
public void setDispatch(BaseDispatch dispatch){
mDispatch = dispatch;
}
}
2、http中间适配层
因为对于不同需求返回的数据结果并不相同,可以用json、xml、二进制字节流等。所以需要进行对于的适配。
伪代码:
public interface BaseDispatch{
void dispatch(T<HttpResponse> response,K id);
}
.....
例如
public class JSonDispatch implements BaseDispatch{
public void dispatch(T<HttpResponse> response,K id){
String json = response.getResponse();
//发送事件广播出去,业务层可以注册事件来接收事件广播
sendEvent(json,id);
}
}
.....
3、http业务层
注册接收事件的广播来处理对应的http请求
4、需要注意
-K 的设计要保证唯一,在同一个事件源发出同样到请求可用累加计数处理
-sendEvent必须保证能及时发出去,否则阻塞回造成整个请求卡死
-业务层在退出业务时候,需要取消注册的事件处理器。