android http网络请求

2017-05-25  本文已影响0人  flyman_namylf
对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必须保证能及时发出去,否则阻塞回造成整个请求卡死
-业务层在退出业务时候,需要取消注册的事件处理器。

上一篇下一篇

猜你喜欢

热点阅读