1、优化请求参数冲突校验逻辑
2、优化下载到目录时的文件名生成逻辑:使用系统文件连接符
3、优化 FormConvertor: 使支持配置是否使用 URLEncode
1、Stomp 只在连接关闭时重置状态
2、优化 Stomp 消息接收机制,兼容数据包之间的非法字符
增强:Stomp 在 OnException
回调里也支持再次发起连接
参考:https://github.com/ejlchina/okhttps/issues/36
setOnException(OnCallback<Throwable> onException)
AynscHttpTask
、WebsocketTask
、Stomp
保证各回调设置方法的线程安全onConnected
回调时,Stmop 连接成功 但 isConnecting()
方法仍然返回 true
的问题Stomp 兼容低版本的 Android 系统
修复:
https://gitee.com/ejlchina-zhxu/okhttps/issues/I3W21B
OkHttps
与 HttpUtils
开放 getHttp()
方法WebSocketTask
新增 close
方法,用于关闭当前连接WebSocketTask
:同一时间只能建立一个连接,如果已经建立连接并未断开,重复调用 listen()
方法将直接返回原有连接Stomp
新增 disconnect(int maxWaitSeconds)
方法Stomp
新增 disconnect(boolean immediate)
方法,用于立即断开连接Stomp
新增 isConnecting()
与 isDisconnecting()
方法MsgCodec
接口,使得编解码模块易于扩展MsgCodecImpl
实现类,并实现了半包粘包处理逻辑1、Stomp 在连接断开时重置 Subscriber 的状态,以便在重连后可以自动订阅
2、重构 bodyType 与 Content-Type 机制,实现用户可以指定在 Content-Type 头中是否携带字符编码
1、不上传文件时,可以指定 form-data 格式的表单
2、修复:https://gitee.com/ejlchina-zhxu/okhttps/issues/I3OQ05
3、升级底层依赖
1、项目分割,分离出 data 项目单独维护(JSON、XML 等结构化数据的统一抽象 API):
https://gitee.com/ejlchina-zhxu/data
2、依赖 data 项目中新增 HashMapper 与 ListArray 两个实现类
3、升级事项: 用到以下四个类需要重新导包:
v2.x | v3.x |
---|---|
com.ejlchina.okhttps.DataSet |
com.ejlchina.data.DataSet |
com.ejlchina.okhttps.Array |
com.ejlchina.data.Array |
com.ejlchina.okhttps.Mapper |
com.ejlchina.data.Mapper |
com.ejlchina.okhttps.TypeRef |
com.ejlchina.data.TypeRef |
1、Mapper 与 Array 接口新增 forEach 遍历方法
2、新增 okhttps-parallel 模块,实现多线程下载到不同的临时文件,最后再合并的需求
3、优化当使用多个 MsgConvertor 时,对 Body 进行 toXXX() 泛型转换时,自动开启 cache
4、优化 Download 模块,使支持多任务并行下载到同一个文件内
5、优化:方法 sync()、async() 与 baseUrl() 传入的 URL 自动 trim
6、优化异常提示文字,部分异常打印当前的 URL
API
1、 HTTP#Builder
新增contentTypes
方法,可扩展配置默认支持的请求类型
2、 HTTP#Builder
新增clearPreprocessors
、clearMsgConvertors
方法
3、 HttpResult
新增getTask
方法,可获取所属的请求任务
4、 HttpResult
新增of(HttpTask<?>, Response)
方法,可构造一个HttpResult
实例
5、 WebSocketTask
新增flexiblePing(boolean)
方法,当传参false
时,可兼容某些强制客户端必须以固定的间隔发送心跳的服务器
6、 Stomp
新增sendToTopic
与sendToQueue
方法,
7、 Stomp
新增isConnected
方法,可直接判断连接是否已建立
优化
1、 优化自定义请求方法HttpTask#request()
的参数处理:请求方法自动 toUpperCase,避免用户传入小写时造成意想不到的问题
2、 优化bodyType
与msgType
的参数处理,自动 toLowerCase,避免用户传入大写时造成意想不到的问题
3、 使得未添加MsgConvertor
时,使用setBodyPara(String|byte[])
与bodyType
方法也能够发起对应格式的请求
4、 优化 Stomp 订阅与退订机制:同一个实例支持多线程并发订阅与退订操作
5、 优化 Stomp 消息匹配机制:兼容 RabbitMQ 在某些情况下的推送的 消息目的地 与 订阅目的地 不一致的情况
6、 优化 Stomp 连接的断开流程:在连接断开前保证已发消息到达服务器
7、 优化文件下载的异常处理流程
升级注意事项:
1、 类FilePara
从HttpTask
中分离,不再是HttpTask
的内部类,有直接引用FilePara
的代码需要重新导包。
1、Websocket 新增 status() 方法
2、WebSocketTask 新增 isConnected() 方法,可判断连接是否已建立
3、抽象 DataSet(只读数据集)接口,Mapper 和 Array 为其子接
4、优化文件下载控制部分代码
因上版发布比较仓促,建议 v2.4.4 都升级到 v2.4.5
提升 WebSocket 模块的兼容性:增强型心跳机制兼容 Android 6.0(SDK 23)及以下版本
新增特性:同一个网络请求结果 HttpResult 和 HttpBody 可以支持多线程并发访问(使用时无需再手动加锁)
1、新增超轻量无第三方依赖的 XML 扩展模块
2、优化 gson 与 jackson 扩展模块
1、修复 GsonMapper 和 GsonArray 在键值为空情况下,取值会报 JsonNull 异常问题
2、优化 STOMP 消息解析机制,修复服务器下发 ERROR 帧时会报异常问题
3、STOMP 新增 onError
回调,可监听处理服务器下发 ERROR 帧
4、兼容 spring-boot websocket 服务器,修改 STOMP 建立连接时的默认心跳数据内容,空 -> 换行符
1、全面兼容 OkHttp 4.x 版本
2、HttpTask 新增 getPathParas()、getUrlParas()、getBodyParas()、getFileParas()、getRequestBody() 方法
3、优化HttpTask#addFilePara(String name, String type, byte[] content)方法,添加自动生成文件名逻辑,兼容某些必须要提供文件名才能接受到文件的后端接口
重新实现 WebSocket 心跳机制
使用者可以选择使用 OkHttp 自带的心跳模式,也可以选择使用 OkHttps 提供的增强型心跳机制,它具有如下特性
1、增强泛型反序列化,支持复合泛型
2、HttpCall 接口新增 getTask 方法,可获取当前任务
3、OkHttps 工具类 新增 newBuilder 方法,可用于复用 SPI 方式注入的配置信息
4、HttpTask 类 新增 isAsyncHttp 和 isSyncHttp 方法(v2.1.0 新增了 isWebsocket 方法)可用于判断 HttpTask 的任务类型
5、优化在 Android 端的异步请求性能