Skip to content

xwangly/NetworkAccessLayer

Repository files navigation

NetworkAccessLayer

网络接入层框架,支持Http与Socket,支持同步与异步,支持取消操作。

Gradle引用方法 在项目根目录中的gradle文件中加入:

allprojects {

    repositories {

        jcenter()

        maven {

            url  "http://dl.bintray.com/xwangly/maven/"

        }

    }

}

在引用的Module中加入:

compile "com.xwang.net:NetworkAccess:1.0.4"

NetExecutor: 网络层接口,提供如下方法

RESPONSE sendRequest(REQUEST request) throws NetException;

VOID sendRequest(REQUEST request, NetCallback<RESPONSE> listener);

VOID cancelRequest(Object tag);

VOID shutDown();

Engine:网络引擎,真正做网络请求的,可以自定义网络引擎

ENGINERESPONSE performRequest(EngineRequest<REQUEST> request) throws NetException;

VOID cancelRequest(EngineRequest<REQUEST> request) throws NetException;

VOID shutDown();

NetResponseParser:结果解析接口,网络引擎将网络响应的数据解析成一个通用的对象,用户实现自己的parser方法,将通用对象解析成用户需要的对象。

网络接入层基于JDK实现的,因此可以脱离Android环境运行。

HTTP:

1.DefalutHttpExecutor
网络层接口,提供同步或异步执行HttpRequest,也可以自己实现一个Http执行器。

2.DefaultHttpEngine
默认的Http引擎,也可以自己实现引擎

3.DefaultHttpRequest
默认的HttpRequest,需要自己实现parser接口,将HttpEngineResponse解析成自己想要的RESPONSE对象

HTTP示例可参照MainActivity的用法

Socket:

可以通过扩展SocketExecutor接口实现Socket操作

需要实现三个方法

1.SocketEngineResponse parseResponse(Socket socket, InputStream is)
解析Socket输入流,读取流中数据,并解析成SocketEngineResponse对象

2.ENGINERESPONSE extends EngineResponse> RESPONSE parseToNetResponse(ENGINERESPONSE engine_response)
将第一步中解析的SocketEngineResponse对象转换成我们自定义的对象,(注:这里的入参可以直接强转成SocketEngineResponse),

3.VOID onPush(RESPONSE response)
推送消息,可以选择实现,如果需要接收推送消息,实现该方法即可。

第一步中解析SocketEngineResponse对象时,由自己判断是不是推送消息。

备注:

这套网络框架是我在Android项目中使用的,我们的项目有一个HTTP接入层和一个Socket接入层,通过一年多的迭代,从而实现了该框架。 我们的HTTP接入层的引擎使用了OKHttp框架实现,也可以使用项目中的DefaultHttpEngine实现。

有人可能会问,我们公司有一套自己的Socket协议,能否使用这套框架吗? 需要满足一个条件:你们的协议中发送的请求中的序列号在响应流中会返回吗?如果会,就可以使用这套框架

这套框架参考并吸收了OKHttp和Volley的一些精要东西,

比如参数了OKHttp的Dispatcher设计,从而可以同时支持同步和异步的网络请求;

参数了Volley框架的Request设计,从而可以让用户得到自己想要的RESPONSE对象;

参数了Volley框架的日志设计,从而可以直观的看到一个请求的执行过程和执行时间。

之所以写这套网络接入框架,是源于我们的项目需要

我想要一套基于JDK的网络框架;

我想要一套简单好用的Socket的框架

我想要清楚的看到请求的参数,响应的结果集

我想要一套通用的能指定响应结果类型的网络框架,

我想要一套能取消请求的网络框架

我想要。。。

如果使用中遇到什么问题或对框架有建议的请与我联系:

github:xwangly

tencent:605134012

#Created by xwangly on 2016/9/7.

About

网络接入层框架,支持Http and Socket

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages