开发中如果依赖了第三方Jar,而第三方Jar又需要依赖其他第三方库,如果是App开发还可以接受 但是如果是SDK开发者这种情况挺尴尬的,打成Jar后可能SDK体积会变的很大,又或者并不需要引入其他第三方库有点大材小用的感觉。
EasyNetwork
封装了一套Android原生的Http框架,提供了类okHttp
拦截器机制,请求统一加密,响应统一解密,不需要额外引入任何库,体积小,强烈建议SDK开发者引入jar包.
�作为SDK开发者,强烈建议下载jar包依赖,方便混淆 | Click download jar
EasyNetwork.initializeConfig()
必须传一个EasyNetworkConfig(Context)
实例
在您的Application#OnCreate
初始化各种配置.
// Request拦截器
public interface InterceptRequest {
Request onInterceptRequest(Request request);
}
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
// 如果需要添加各种自定义配置,传入一个EasyNetworkConfig即可
EasyNetworkConfig config = new EasyNetworkConfig();
// 添加 公共参数拦截器
config.addIntercepts(new AppendGlobalParamsIntercept());
// 添加 统一加密所有请求
config.addIntercepts(new APISignatureIntercept());
// 重试次数
config.setRetryCount(5)
// 重试时间间隔
config.setRetryIntervalMillis(3000);
EasyNetwork.initializeConfig(config);
}
SimpleIntercept |
---|
AppendParamsIntercept |
APISignatureIntercept |
EasyNetworkConfig
属性 | 说明 |
---|---|
setRetryCount(int) |
失败的重试次数 |
setOpenRetry(boolean) |
是否需要打开重试功能 |
setRetryIntervalMillis(long) |
每次重试的间隔时间 |
addIntercepts(InterceptRequest) |
自定义的各种拦截器 |
// 省略部分属性
使用EasyNetwork.sendRequest(request,callback)
即可发送请求
Request request = new Request.Builder()
.url("ur")
.post() // or get
.tag("TAG")
.addHeader("key","value")
.addParam("key", "value")
.build();
// send Request
EasyNetwork.sendRequest(request, new StringEasyCallbackImpl() {
@Override
public void onSuccessful(String data) {
mLogView.setText(data);
}
@Override
public void onFailure(EasyCall easyCall,Throwable error) {
super.onFailure(easyCall, error);
mLogView.setText(error.toString());
}
@Override
public void onCompleted() {
}
});
// cancel Request
EasyNetwork.cancelRequest(request)
继承BaseEasyCallbackImpl
即可,完成自己解析、解密、逻辑接口。Simple Code
- 不再使用单例
- 不需要传入context
- 添加自动请求重定向机制
- 添加自动重试机制
IBaseEasyCallback#onResponse()#onFailure()
新增参数EasyCall
类,EasyCall
目前仅仅包装了一些请求信息. `