-
-
Notifications
You must be signed in to change notification settings - Fork 458
更新日志
RxHttp版本 | Kotlin版本 | ksp版本 | 协程版本 |
---|---|---|---|
v3.3.0~v3.3.1 | v2.0.0 | v2.0.0-1.0.24 | v1.8.1 |
v3.2.5~v3.2.7 | v1.9.23 | v1.9.23-1.0.19 | v1.7.3 |
v3.2.0~v3.2.4 | v1.9.10 | v1.9.10-1.0.13 | v1.7.3 |
v3.1.0~v3.1.1 | v1.8.21 | v1.8.21-1.0.11 | v1.7.1 |
v3.0.2~v3.0.6 | v1.8.0 | v1.8.0-1.0.9 | v1.6.4 |
v3.0.0~v3.0.1 | v1.7.20 | v1.7.20-1.0.7 | v1.6.4 |
v2.9.1~v2.9.5 | v1.7.10 | v1.7.10-1.0.6 | v1.6.4 |
v2.8.9~v2.9.0 | v1.7.0 | v1.7.0-1.0.6 | v1.6.3 |
v2.8.7~v2.8.8 | v1.6.21 | v1.6.21-1.0.5 | v1.5.2 |
v2.8.6 | v1.6.10 | v1.6.10-1.0.2 | v1.5.2 |
v2.8.1~v2.8.5 | v1.6.10 | v1.6.0-1.0.1 | v1.5.0 |
v2.8.0 | v1.6.0 | v1.6.0-1.0.1 | v1.5.0 |
v2.7.0~v2.7.3 | v1.5.31 | 无 | v1.5.0 |
v2.6.5~v2.6.8 | v1.5.20 | 无 | v1.4.2 |
v2.6.0~v2.6.4 | v1.5.0 | 无 | v1.4.2 |
v2.5.6~v2.5.7 | v1.4.31 | 无 | v1.4.2 |
v2.4.0~v2.5.5 | v1.4.0 | 无 | v1.3.9 |
- 修改:对于获取字符串数据,不再通过convert转换,避免转换异常问题 #511
-
修改:RxJava环境下,
Progress<?>
改<Progress<@Nullable T>
-
修改:kotlin版本升级至
v2.0.0
, ksp版本升级至v2.0.0-1.0.24
,协程版本升级至v1.8.1
-
更改:获取String类型数据时,自动去除换行符等转译字符,如获取h5网页内容#502
-
对于未知类型数据,大于1M,日志不打印Body
-
新增:上传/下载进度回调方法
onProgress
、onMainProgress
增加minPeriod
参数,以设置最小回调周期,避免密集回调,默认500毫秒 -
新增:上传/下载进度回调类
Progress
,增加getFraction()
方法,可获得一个范围在[0.0, 1.0]之间的float
类型字段,代表上传/下载进度 -
新增:上传/下载进度回调类
Progress
,增加getSpeed()
方法,可获得上传/下载速度,单位byte/s
-
新增:上传/下载进度回调类
Progress
,增加calculateRemainingTime()
方法,可获得上传/下载剩余时间,单位:s
-
更改:对传入的缓存有效期字段做合法校验,必须要大于0,否则将抛出异常
- postForm请求下,新增
addParts(Map<String, RequestBody>), addParts(List<Part>)
方法
-
修改:kotlin升级至
v1.9.23
, ksp 升级至v1.9.23-1.0.19
-
修复ksp环境下,会出现编译报错,找不到RxHttp类问题,详情#489
- kapt编译时,不再检索
Override
注解,避免ksp依赖rxhttp-compiler
,同时依赖hilt插件,导致#480问题
- 修复用Java自定义解析器,
wrappers
参数传入List.class
,ksp
编译后BaseRxHttp
类报错问题#476
-
增加下载开始及结束日志打印
-
优化日志打印,当出现异常时,日志将更加直观,所有异常都带上对应的url信息
-
修复部分json字符串没有格式化输出问题,3.2.0版本修改#463引起的问题
- 兼容
R8 full mode
,避免该模式下混淆后,部分场景请求闪退问题#471
-
修改:kotlin升级至
v1.9.10
, ksp 升级至v1.9.10-1.0.13
-
修改:协程升级至
v1.7.3
-
修改:日志打印增加读取body所花费的时间
-
修复:修复接口返回非标准json字符串,日志打印不全问题#463
-
修复:修复解析器onParse方法返回可空类型时,ksp编译报错问题 #456
-
修改:恢复
toDownloadAwait
系列方法(该系列方法在v3.1.0版本中删除),但如要监听下载进度,请使用Flow替代 -
修改:下载时,文件名占位符支持添加前缀,例如:
/sd/../download/test-%s
-
修复:修复
v3.1.0
版本,ksp环境下,没有使用@DefaultDomain注解时,生成的RxHttp类报错问题 #454
-
修改:kotlin升级至
1.8.21
,ksp 升级至1.8.21-1.0.11
,协程升级至1.7.1
-
新增:对于
Flow
,新增onProgress(Int, suspend (Progress) -> Unit)
方法监听上传/下载进度,之前的监听方式被删除,如下:
//老方式
RxHttp.get("/article/list/0/json")
.toDownloadFlow("本地路径") { progress ->
//进度回调
}
...
//新方式
RxHttp.get("/article/list/0/json")
.toDownloadFlow("本地路径")
.onProgress { progress ->
//进度回调
}
...
//上传进度回调同理
- 新增:增加
toObservableOkResponse/toAwaitOkResponse/toFlowOkResponse
方法,对于任意解析器均支持返回OkResponse<T>
对象#450,该方法需要在toObservable/toAwait/toFlow
系列方法后调用,如下:
RxHttp.get("/article/list/0/json")
.toObservable<User>() // 这里返回Observable<User>
.toObservableOkResponse() // 这里返回Observable<OkResponse<User>>
...
// Flow/Await同理
-
新增:增加
setQuery/setEncodedQuery
方法,以支持覆盖查询参数#443 -
新增:增加3个参数的
addQuery(String, Any?, Boolean)/setQuery(String, Any?, Boolean)
方法 -
删除:将
toDownloadAwait
系列方法删除(内部是通过Flow实现),请直接通过Flow实现下载相关功能 -
删除:将
toXxxMapString
系列方法删除,请直接使用toXxx<Map<String, T>>
方法替代
-
上传/下载进度队列默认容量设置由1改为2
-
对响应头
Content-Disposition
里的filename
字段做URLDecoder
处理
-
新增
FormParam#getMultiType
方法,以向外暴露multiType
对象 -
优化日志打印,对于未捕获的异常,将详细输出日志
-
修复okhttp版本号读取失败,返回
okhttp/4.2.0
问题,改为okhttp/x.x.x
-
应大众要求,恢复
RxHttpFormParam#add(String, Object, boolean)
方法 -
修复解析器构造方法Type类型参数名非
type
时,编译报错问题(仅3.x版本有此问题) -
kapt下,RxHttp扩展方法文件名称由
RxHttp.kt
改为RxHttpExtension.kt
,与ksp保持统一
-
新增:
rxhttp-compiler
新增rxhttp_android_platform
参数,可用于非Android平台,传入true,就不会生成Android 相关方法 -
修复RxJava订阅过程出现异常时,引发
call.cancel()
空指针问题 -
修复自定义解析器,声明解析器返回
Response<T>
类型时,生成的toXxxResponse
方法,仅返回T
类型问题(3.0版本才有的问题)
-
修改:
kotlin
升级至1.8.0
,ksp
升级至1.8.0-1.0.9
-
修改:消除编译时的一些警告,部分代码简化
-
修复
v3.0.0
版本ksp编译下,通过addFile(String, String)
方法上传文件失败问题 -
RxHttp
类代码简化
-
修改:
kotlin
升级至1.7.20
,ksp
升级至1.7.20-1.0.7
-
修改:更改默认OkHttpClient对象,默认不信任自签名证书https网站
-
修改:asXxx/toXxx/toFlowXxx方法统一改为toObservableXxx/toAwaitXxx/toFlowXxx
-
新增:
toObserableXxx/toAwaitXxx/toFlowXxx
方法泛型支持传入OkResponse<T>
,可同时获得任意Bean类、请求头等数据,例如toAwait<OkResponse<List<User>>>
-
新增:
Flow
环境下新增toFlowString/toFlowList/toFlowMapString/toFlow(Parser)
方法 -
新增:
RxJava
环境下,新增onProgress/onMainProgress
方法,上传/下载进度监听,统一使用该方法,可直接在UI线程回调,之前的进度监听方法被移除 -
修改:
asMap/toMap
方法改为asMapString/toMapString
,输入一个泛型即可 -
修改:
setSync
改为syncRequest
,并且需要在asXxx
方法后调用 -
修改:公共参数接口由
Function
改为Consumer
,并且接口方法返回值改为void
-
修改:带进度断点下载适配
If-Range
请求头 -
修改:
SimpleParser.kt
改名为SmartParser.kt
-
删除:移除
xxxBitmap/xxxHeaders/xxxOkResponse
方法,请使用toXxx<Bitmap>/toXxx<OkResponse<T>>
方法替代 -
删除:移除
RxHttp#setUploadMaxLength(int)
方法,移除所有的过时方法及类 -
删除:移除一系列
Await<List<T>
扩展方法,如filter、sort
等,请使用系统的List<T>
扩展方法替代,并在await
方法后调用
-
优化:部分代码优化,使得jar包大小由
v2.9.3
版本的327k
减小到269k
-
修复:关闭issue#407,结合RxJava发请求,监听文件上传进度,偶现回调进度局部错乱问题
-
修改:消除部分警告,更改部分注释
-
新增:所有的Converter均支持传入
content-type
参数,以适应个性化需求 -
新增
RxHttpPlugins.cancelAll(OkHttpClient)
、RxHttpPlugins.cancelAll(OkHttpClient, Object)
,以支持通过tag关闭任意OkHttpClient
对象的请求 -
修复
asResponse(Class<T>)
方法,传入基本类型数据时,Gson
解析报java.lang.IllegalArgumentException
异常问题,详情查看#399 -
修复协程
Await/Flow
方式下载时,无法通过RxHttpPlugins.cancelAll(Object tag)
方法关闭请求问题,详情查看#398 -
修改:不干预
Gson
对基本类型数据的序列化过程,以避免serializeSpecialFloatingPointValues
、longSerializationPolicy
两个配置失效问题 -
修改:为所有的过时方法/类,增加注释
scheduled to be removed in RxHttp 3.0 release.
,计划在3.0
版本中移除这些方法/类
-
新增:
Json
日志支持格式化输出,通过RxHttpPlugins#setDebug(true, true, 2)
方法第三个参数,可设置缩进空间 -
修改:
Gson
版本升级至v2.9.1
-
修改:对于自定义解析器,仅检索
public
构造方法,不再要求提供无参构造方法 -
修改:规避#396中,因开启混淆优化后,发请求报
Missing type parameter
异常问题
-
新增SerializationConverter,以更好的支持kotlinx.serialization实现序列化/反序列化
-
修改:
awaitResult
方法增加inline
关键字 -
修改:
kotlin
版本升级至1.7.10
,kotlinx-coroutines-android
版本升级至1.6.4
-
修改:
ksp
版本升级至1.7.10-1.0.6
-
修改:
moshi
版本升级至1.13.0
,jackson
版本升级至2.13.3
-
修改:对缓存相关参数(缓存大小、缓存有效期)做合法性校验
-
修改:http 状态码为416时,不读取body,以避免body过大,造成oom问题
-
修改:自定义解析器
onParse
方法支持返回null(注:仅限协程环境下才支持) -
修复部分场景下,即使开启分段打印,日志依然打印不全问题
-
kotlin
版本升级至1.7.0
,kotlinx-coroutines-android
版本升级至1.6.3
-
ksp
版本升级至1.7.0-1.0.6
-
ksp
编译下,RxHttp.get/postXxx
系列方法第二个参数改为可空类型
- 修复
ksp
编译生成的get/postXxx
系列方法,传入第二个参数时,抛出IllegalFormatConversionException
异常,导致崩溃问题,kapt/annotationProcessor
编译无此问题
-
kotlin
版本升级至1.6.21
-
ksp
版本升级至1.6.21-1.0.5
-
兼容
okhttp 4.9.2
及以上版本,敏感请求/响应头Authorization
、Cookie
、Proxy-Authorization
、Set-Cookie
日志不打印问题 -
调整
NoBodyParam
、FormParam
、JsonParam
、JsonArrayParam
的toString
方法,避免没域名时,debug不显示具体值问题
-
kotlinx-coroutines-android
升级至v1.5.2
版本 -
反序列化为null时,抛出异常,以修复协程环境下非空类型数据遇到null时崩溃问题
-
修改:修改ksp编译错误提示
-
修改:解析器泛型有非
Any/Object
类型边界时,将不再处理Parser注解里wrappers字段
- 修复ksp编译时,依赖okhttp 4.0以下版本,编译报错问题(类型安全问题)
- 用
Gson
处理反序列化时,对int、long、double
基本类型数据做容错处理
- 修复由资源改动触发ksp增量编译时,注解失效问题
-
修改:
Kotlin
版本升级至v1.6.10
-
修改:
ksp
编译下,RxHttp
等相关类使用Kotlin
编写,此时,使用@defaultDomain, @domian, @okClient, @Converter
4个注解不需要依赖@JVMField
注解
-
新增:正式支持google/ksp,详情点击ksp、kapt、annotationProcessor 用法及区别
-
新增:若使用ksp编译,
@DefaultDomain
、@Domian
、@OkClient
、@Converter
注解,可在顶级变量或伴生对象中使用 -
修改:Kotlin版本升级至
v1.6.0
, Gson版本升级至v2.8.9
-
修复自定义解析器构造方法有可变参数时,生成的
toFlowXxx
方法编译报错问题
-
新增
addPath(String,Object)、addEncodedPath(String,Object)
方法,以支持替换url
中的{xxx}
字符串 -
修改:将
Param
接口改为抽象类,以兼容因aar
引发的java.lang.NoSuchMethodError异常
-
修复
v2.7.1
版本中,对于自定义解析器,未声明两个必需的构造方法时,编译没有定位到具体代码问题 -
修复
v2.7.1
版本中的LogInterceptor
日志打印类,未兼容OkHttp v4.0
以下版本问题
-
新增
toFlowBitmap/toFlowHeaders/toFlowOkResponse
方法 -
修改:调整请求开始日志打印时机,待请求真正执行时打印
-
kotlin
版本升级至v1.5.31
,kotlinx-coroutines-android
版本升级至v1.5.0
-
新增
onStart(suspend () -> Unit)
、onEach(suspend (T) -> Unit)
、await((Throwable) -> T)
三个Await
接口扩展方法 -
新增一系列
toFlow<T>
方法,通过Flow
发送请求,可轻松监听上传/下载进度,并且性能更优,toDownloadFlow/toAppendDownloadFlow
系列方法被删除,请使用toFlow/toFlowProgress
系列方法替代 -
新增
addQuery(String)、addAllQuery(String,List)
方法,前者可添加value
为null的查询参数,后者可为单个key
添加多个value
-
修改:
toDownload
方法增加append
布尔参数以支持断点下载,之前的断点下载方法toAppendDownload
被删除 -
修改:
IAwait
改名为Await
,并且包名改为rxhttp.wrapper.coroutines
-
修改
HttpStatusCodeException
里的statusCode
字段为int类型 -
修改:使用缓存功能,若未设置缓存目录,将抛出具体的异常
-
修改:upload(CoroutineScope,progressCallback)方法标记为过时,请使用toFlow方法监听上传进度,性能更优,且更简单
-
修改
setJsonBody(Object)
方法为过时,使用setBody(Object)
方法替代 -
修复
RxHttp.xxxJson
方法,设置XmlConverter/ProtoConverter
后,body
不发送问题 -
修复自定义不带泛型的解析器时,配合@Parser注解,编译报错问题
-
删除
add(String,File)
过时方法,删除一系列setXxxQuery
方法 -
删除
awaitXxx
方法,请使用toXxx + await
方法替代 -
删除一系列
asXxx/toXxx/awaitXxx
等一系列返回基本类型的方法
- 适配
RxJava v3.1.1版本
,需要通过rxhttp_rxjava
参数传递具体的RxJava版本号给rxhttp-compiler
,如下:
kapt {
arguments {
arg("rxhttp_rxjava", "3.1.1") //可传入rxjava2、rxjava3或具体的版本号
}
}
//或者,如果你未集成kotlin,请使用annotationProcessorOptions传参
annotationProcessorOptions {
arguments = [
//可传入rxjava2、rxjava3或具体的版本号
rxhttp_rxjava: '3.1.1',
]
}
-
修复
RxHttp v2.6.6
版本与Hilt
配合使用,编译报错问题 -
修复
RxHttp v2.6.5
以上版本与OkHttp v3.14.0
以下版本配合使用,请求开始日志打印失败问题
-
修复
fun Uri?.length(contentResolver: ContentResolver): Long
方法,内部没有及时将ParcelFileDescriptor
关闭问题 -
修复
IAwait<T>.async
方法,协程关闭时,请求无法关闭问题
-
新增:FileRequestBody类,文件上传统一使用该类实现,并且支持跳过skipSize个字节,以更好的支持断点上传
-
新增:UriRequestBody类增加skipSize字段,上传时支持跳过skipSize字节,以更好的支持断点上传
-
修改:kotlin版本升级至1.5.20
-
修改:更改日志打印逻辑,对于
FileRequestBody
、UriRequestBody
类,不再打印body内容,防止日志打印耗时问题 -
修改:兼容Android studio开启Profiler监控网络或
Database Inspector
数据库分析器后,带进度上传请求始终失败问题,报java.lang.IllegalStateException: closed
异常问题 -
删除:将
UpFile
类里面的过时方法删除 -
删除:删除
RxHttpFormParam
类下的addFile(String,String,String)、addFile(String,String,File)
,统一使用addFile(String,File,String)
方法替代
- 修复
v2.5.1
以上版本调用FormParam#set(String, String)、FormParam#removeAllBody(String)
会将之前添加的参数清空问题
-
新增
IAwait<T>.repeat
操作符,以支持轮训请求 -
更改
IAwait<T>.retry
操作符的times
参数为Long
类型 -
更改:将fastjson、moshi等第三方版本库升级至最新
-
修复日志打印,当请求数据过大时,请求总耗时误差大问题
-
新增:增加
TypeParser
解析器,该解析器支持多个泛型,并将AbstractParser
解析器标记为过时,使用TypeParser
替代 -
新增:增加两个
IRxHttp.awaitResult()
方法 -
修改:自定义解析器,构造方法支持传入可变参数类型及数组类型
-
修改:
Android 10
下载兼容okhttp 4.0
以下版本 -
修改:kotlin版本升级至
1.5.10
-
新增:为IAwait下的
tryAwait
方法增加异常回调参数;为awaitResult
方法增加成功回调参数 -
新增:
TypeUtil
类下新增Array<Type> getActualTypeParameters(Class)
方法,并将该类改为kotlin编写 -
修改:将上传的body最大值设置为Long.MAX_VALUE(之前Integer.MAX_VALUE)
-
修改:一些注释更改及内部代码简化
-
新增:Kotlin环境下,为
okhttp3.Response
类扩展4个convertXxx
方法,通过该系列方法,可直接将接口返回内容转化为自定义对象 -
修改:由于JCenter停止维护,故全面迁移至jitpack,
groupId
由之前com.ljx.rxhttp
改为com.github.liujingxing.rxhttp
,版本升级时,请注意更改依赖 -
修改:更改cookie读写机制,根据name、domain、path及Secure字段来判断cookie是否相同,统一域名下,支持同时保存多个cookie
-
修改:自定义解析器且未依赖RxJava的,将不再对带参构造方法进行安全检查,此时,该构造方法可有可无
-
修改:kotlin版本升级至1.5.0
-
修改:消除编译时的一些警告
-
删除:RxHttp类下
dispose(Disposable)、isDisposed(Disposable)
静态方法移除,如有用到,使用RxLife
类替代,如:RxLife.dispose(Disposable)
-
删除:RxHttp类中的初始化相关方法,全部被删除,如有用到,请使用RxHttpPlugins类中进行缓存配置、公共参数等初始化操作,如下:
//RxHttp初始化,非必须
RxHttpPlugins.init(client) //自定义OkHttpClient对象
.setDebug(BuildConfig.DEBUG) //是否开启调试模式
.setCache() //配置缓存
.setExcludeCacheKeys() //设置一些key,不参与cacheKey的组拼
.setResultDecoder() //设置数据解密/解码器,非必须
.setConverter() //设置全局的转换器,非必须
.setOnParamAssembly(); //配置公共参数/请求头
-
修改:删除
RxHttp#setOkClient(OkHttpClient)
方法中的org.jetbrains.annotations.NotNull
注解 -
修复:修复
RxHttpJsonParam#addAll(String)
方法,对于超大整型、浮点型数据,序列化过程精度丢失问题
-
修改:kotlin版本升级至v1.4.31,协程版本升级至v1.4.2
-
修改:
Uri#asPart
、BodyParam#setBody
方法兼通okhttp 4.0以下版本
-
修改:IRxHttp#toXxxFlow方法增加CoroutineContext参数,并赋于默认值EmptyCoroutineContext
-
修复:修复BodyParam#setJsonBody(T)方法报IllegalStateException异常问题
-
修复:修复自定义解析器时,onParse方法参数里加上注解时,asResponse方法不生成问题
-
新增:
postForm
请求下新增一系列setMultiXxx
方法,以支持更多的multipart
类型 -
新增:
postForm
请求下新增addFiles(List<T>)
、addFiles(Map<String,T>)
方法,替代之前的addFile(List<File>)
、addFile(Map<String,File>)
-
更改:调整日志打印格式,日志打印新增Cookie、Accept-Encoding等请求头;对
url、请求体、响应体
,输出时不在进行UrlDecoder
处理;对于MultipartBody,采用全新的日志打印格式,更加直观的看出请求体都有哪些东西
-
更改:兼容Content-Disposition响应头,filename带有单引号/无引号的情况
-
更该:对于multipart/form-data 请求,添加的单个参数大于1k时,将该参数省略打印
-
新增:增加
BodyParam
类,通过RxHttp.postBody(String)
方法,可发送byte数组、文本、Uri、File等任意形式的RequestBody
对象 -
更改:从Content-Disposition响应头取文件名时,根据里面的编码方式去自动编码
-
新增:RxHttp类下新增
addQuery、setQuery
等一系列与查询参数相关的方法,任意请求均可调用 -
新增:RxHttp类下新增
setOkClient(OkHttpClient)
方法,可为当前请求动态配置OkHttpClient
对象 -
新增:
postForm、get
请求下,新增addAllEncoded(Map)
方法 -
新增:新增
AbstractParam#buildCacheKey
方法,自定义cacheKey时,可重写此方法;之前的getCacheKey
方法声明为final类型,不可再重写 -
更改:下载链接无
Content-Length
响应头返回时,进度回调仅回调当前已下载的字节数(之前不回调) -
更改:对于Json请求,支持通过
addAll("{}")
方式发送空对象{}
给服务端 -
更改:取消
RxHttp.init(OkHttpClient)
只能初始化一次的限制 -
修复:修复用kotlin自定义解析器时,构造方法有可空类型参数时,生产的toXxx方法,没有对应的可空类型参数问题
-
删除:RxHttp类下删除一系列
with
方法 -
删除:删除
IJsonArray、IJsonObject
接口 -
删除:删除
FormParam#queryValue(String)、FormParam#queryValues(String)、NoBodyParam#queryValue(String)、NoBodyParam#queryValues(String)
方法
-
新增:RxHttp类下新增
addNonAsciiHeader(String, String)
、setNonAsciiHeader(String, String)
方法,以支持添加非Ascii码字符的请求头 -
修复:修复响应头里有非Ascii码字符存入到缓存时,下次读取缓异常问题
-
修改:调整日志打印格式,已更直观的方式看到状态码、请求耗时等信息
-
新增:支持分段打印日志,调用
RxHttp.setDebug(boolean, boolean)
方法,第二个参数设置为true,日志过长时,就会将日志分段打印 -
修改:文件下载,未传入文件名时,如:
/storage/emulated/0/Android/data/com.example.rxhttp/cache/%s
, 优先从Content-Disposition
响应头里取文件名,没有,则从url里截取文件名 -
修复:修复通过
addPart
系列方法,上传沙盒目录下的文件失败问题
-
修改:内部自动识别okhttp版本号,无需再通过
rxhttp_okhttp
参数告知rxhttp-compiler
okhttp的版本号 -
修改:可以在任意时机设置全局缓存策略(之前只能在rxhttp初始化后设置)
-
新增:新增一系列
asAppendDownload
、toAppendDownload
、toAppendDownloadFlow
方法,以更好的支持断点下载 -
新增:
RxHttp.postForm
请求下新增addFile(Map<String,File>)
方法 -
修复:偶现下载到100%时,100%进度不会调问题
-
修复:解决文件名带
#
号的文件上传失败问题
-
新增:对于
RxHttp.postForm
请求,新增一系列addPart
方法,以支持Android 10文件上传,可直接通过Uri
对象上传文件 -
新增:新增一系列
asDownload
、toDownload
方法,以支持Android 10文件下载,可直接通过Uri
对象下载文件 -
修改:内部对
RxJava
、协程
的实现逻辑,换了全新的方案,使的扩展性更高,结构性更强 -
修改:kotlin版本升级至
1.4.0
; 协程版本升级至1.3.9
; gson版本升级至2.8.6
-
修改:对于声明了泛型的自定义解析器,将会默认生成asXxxList方法
-
修改:对任意带
RequestBody
的请求,都支持设置上传进度回调 -
删除:
RxHttp
类下删除一系列subscribeOnXxx
方法,仅保留subscribeOnCurrent
方法,但将其标注为过时方法,使用setSync
替代 -
删除:删除
BuildUtil
类下一系列过时方法 -
删除:删除
RxHttp#asObject
过时方法,请使用RxHttp#asClass
方法替代
-
修改:更改自定义解析器的校验逻辑,对带有泛型的解析器,先校验无参构造方法,后校验
java.lang.reflect.Type
类型参数的构造方法,其它构造方法不校验 -
修改:上传文件时,对文件进行校验,不符合直接抛出异常
-
修复:修复async操作符,异常向上传播,导致父协程关闭问题
-
修复:修复自定义解析器,没有声明泛型时,不生成toXxx方法问题
-
修复:修复自定义解析器,构造方法有
Java
基本类型参数时,生成的toXxx方法,未将Java
基本类型参数转换为kotlin
基本类型参数问题 -
修复:解决
MoshiConverter
解析String类型失败问题 -
删除:删除
Parser#getResult(Response)
过时方法,可使用Parser#convert(Response,String.class)
替代 -
删除:删除RxJava三部曲下的await方法
-
新增:
RxHttp
下新增connectTimeout、readTimeout、writeTimeout
方法,通过该类方法可对单个请求设置连接、读、写
超时 -
新增:文件下载时,传入的本地文件路径,可通过Java标准占位符替代文件名,如:
.../test/%s
,此时,内部会截取url中的文件名与之替代 -
新增:增加
MoshiConverter
,以支持Moshi
解析
-
新增:协程环境下增加
flowOn
操作符,通过该操作符可指定上游所在线程 -
新增:协程环境下增加
asFlow
操作符,通过该操作符可将当前流转为kotlinFlow
流 -
新增:协程环境下增加
awaitResult
操作符,通过该操作符,可获得kotlin.Result
对象 -
新增:协程环境下增加
insert/filter/distinct/sort/subList/take/
等一系列作符,可对服务端返回的列表执行插入/过滤/去重/排序
等操作 -
新增:增加一系列
RxHttp#executeXxx
方法,用于执行同步请求,通过返回值获取结果 -
修复:解决
postJson
类型请求,通过addAll(JsonObject)
等与Gson相关的方法添加参数时,使用FastJsonConverter
序列化失败问题 -
修复:解决
FastJsonConverter/JacksonCoverter/XmlConverter
的convert
方法内部不执行解密回调问题
-
修改:v2.2.8版本起,内部自带混淆规则,故该版本起,可无需在项目中添加混淆代码
-
修改:将
upload(Consumer,Scheduler)
方法标记为过时,新增upload(Scheduler,Consumer)
方法替代;将upload(CoroutineScope,Progress)
方法第一个参数改为必填 -
修改:通过
toDownload
方法设置的进度回调,支持在suspend
方法中回调 -
修复:修复Android 5.0以下系统,通过
RxHttp.setDebug(true)
开启Debug模式后,发请求始终走失败问题
- 修复
RxHttp 2.2.2
及以上版本,依赖okhttp 3.x
版本时,执行下载任务失败问题
- 修复v2.2.5版本中,使用
@Domain
注解,没指定className
字段时,编译报错问题
-
新增:增加
@OkClient
注解,通过该注解,可为某个请求指定单独的OkHttpClient
对象,详情查看注解使用 -
新增:注解处理器新增
rxhttp_package
参数,通过该参数,可以配置RxHttp
相关类的生成路径,即包名,以支持多个Module同时依赖注解处理器rxhttp-compiler
-
新增:
@Domain
、@Converter
、@OkClient
注解增加className
字段,通过该字段可生成RxHttp
的包装类,通过包装类发请求,将默认使用注解指定的域名、converter及OkHttpClient,详情查看注解使用 -
新增:注解处理器
rxhttp-compiler
支持增量编译 -
新增:增加RxHttp.isInit()方法,通过该方法,可判断RxHttp是否已经初始化
-
修改:自定义解析器,构造方法支持传入多个参数,会为每个构造方法生成对应的asXxx方法
-
修复:修复
asBitmap/toBitmap/asHeaders/toHeaders
方法没有将ResponseBody及时关闭问题 -
修复:修复静态方法RxHttp.isDisposed(Disposable)判断错误问题
-
删除:将通过注解生成的
awaitXxx
方法删除,请使用toXxx
+await
方法替代 -
删除:将静态方法RxHttp.getOkHttpClient()方法删除,请使用HttpSender.getOkHttpClient()方法替代
-
新增
HttpsUtils
处理https,支持自签名证书,双向认证,详细用法请查看关于Https -
修改:适配
okhttp 4.7.x
版本 -
修复:解决
postFrom
请求,添加进度回调时,logcat不输出请求参数问题
- 修复
RxHttp v2.2.2
版本中,依赖OkHttp 3.x
版本,使用Cookie、缓存功能时,会抛出NoSuchMethodError错误问题
-
新增:自定义Param的构造方法支持
0-n
个参数,且支持多个构造方法 -
新增:适配
OkHttp v4.x
版本,截止目前,对OkHttp v3.12.0 - v4.6.0
所有版本均已完成适配(v4.3.0版本除外,该版本有一bug,暂时无法适配),从该版本起,需要手动依赖OkHttp,如你依赖的OkHttp并非最新版本,还需要通过annotationProcessorOptions
告知RxHttp你使用的OkHttp版本号,详情查看API兼容 -
修改:日志打印会输出rxhttp及okhttp版本号
-
新增:增加
RxHttp#addAllHeader
方法,以支持一次性添加多个header -
修复:解决
RxHttp#getUrl()
方法抛异常问题,当传入的url没有域名时 -
修复:解决协程
RxHttp#async
操作符异步任务失效问题
-
新增:协程发送请求支持缓存
-
新增:协程环境新增
toXxx
、map
、delay
、startDelay
、onErrorReturn
、async
、tryAwait
等操作符,具体用法请查看RxHttp ,比Retrofit 更优雅的协程体验 -
新增:RxHttp类新增
dispose(Disposable)
、isDisposed(Disposable)
两个静态方法,用于关闭Disposable对象 -
新增:RxHttpPlugins类新增
cancelAll
、cancelAll(tag)
两个静态方法,用于关闭所有请求及设置了tag的请求 -
修改:将
RxJava
从RxHttp
中完全删除,采用外接方式替代,适配RxJava3,并兼容RxJava2详情点这里 -
修改:由于内部已完全剔除了RxJava,将groupId,由之前的
com.rxjava.rxhttp
改为com.ljx.rxhttp
-
修改:将
setOnParamAssembly
、setResultDecoder
方法要传入的Function
接口对象,包名由之前的io.reactivex.functions
改为rxhttp.wrapper.callback
,如用到,请导入新的包,用Lambda表达式用户不受影响 -
修复:修复自定义解析器没有泛型,使用
@Parser
注解时,编译器报错问题 -
修复:修复
RxHttpFormParam.upload(CoroutineScope,(Progress) -> Unit)
方法返回类型错误问题 -
修复:修复使用RxLifeScope开启协程时,间接子协程出异常时,没有捕获问题,需要依赖RxLife-Coroutine最新版本以解决此问题
-
删除:将asUpload、awaitUpload等过时方法删除
-
删除:将内部的
ListParser
、MapParser
删除,使用ParameterizedTypeImpl类组合泛型实现asMap、asList方法
-
新增:
@Parser
注解新增wrappers
属性,通过该属性,可以生成任意个asXxx方法,比如常用的asResponseList
、asResponsePageList
方法,就不再需要自定义多个解析器去生成了。详情查看自定义Parser -
新增:自定义Param时,支持自定义泛型
-
新增:HttpSender类新增
newOkClientBuilder()
方法,可拿到OkHttpClient.Builder对象 -
新增:表单请求
RxHttpFormParam
新增upload(Consumer,Scheduler)
,通过该方法,可以单独设置上传进度回调 -
修改:将一系列
asUpload
、awaitUpload
方法标记为过时,将在未来版本中删除,请使用upload+asXxx
、upload+awaitXxx
组合替代 -
修复:修复协程失败重试时,会多次构建
okhttp3.Requeat
对象问题 -
修复:修复协程发送请求,出异常时,无日志打印问题
-
新增:新增
RxHttp#retry
、RxHttp#timeout
两个,以支持在协程环境中,设置重试、超时机制 -
新增:新增RxHttpFormParam.upload(CoroutineScope,Progress)方法,通过该方法可单独配置上传进度的监听,仅在协程下可用
-
修改:将Progress类 改为 Progress,删除泛型T,新增ProgressT类与之替代
-
修复:修复调用asXxx方法发送请求时,遇到失败重试机制时,对多次构建Request对象问题
-
修复:修复用RxHttp#buildRequest()方法构造Request对象时,不添加默认域名,不添加公共参数等问题
-
删除:删除HttpSender.newCall(OkHttpClient,Param)方法
-
新增一系列
suspend <T> awaitXxx(): T
方法,用于对协程的支持,通过该系列方法,可直接拿到http返回值,用法请查看RxHttp ,比Retrofit 更优雅的协程体验 -
新增:对于之前
asXxx(Class<T>)
方法,新增了与之同名的无参方法,如:T asXXX<T>()
,此系列方法只有在kotlin下才可见; 由于此改动,自定义解析器的同学,必须要提供两个构造方法,其中一个无参数,一个带Class<T>
参数,无参构造方法需要使用protected关键字修饰 -
新增
setRangeHeader(long,long,boolean)
,其中第三个参数代表在带进度断点下载时,是否需要衔接上次的下载进度,默认为false -
删除
asDownload(String,long,Consumer,Scheduler)
方法,但保留了asDownload(String,Consumer,Scheduler)
方法, 删除该方法后,带进度断点下载时,如果需要衔接上次的下载进度,可通过setRangeHeader(long,long,boolean)
方法的第三个参数进行配置 -
删除过时方法
RxHttp#setConverterEnabled
及RxHttp#setOnConverter
,使用RxHttp#setDecoderEnabled
、RxHttp#setResultDecoder
方法替代 -
修改:对RxHttp子类的命名方式由之前的
RxHttp$XxxParam
,改为RxHttpXxxParam
,删除了$
符号 -
修改:对add(String,File)标记为过时,请尽快使用addFile(String,File)方法替代
-
修改:将
asObject(Class<T>)
标记为过时,新增asClass(Class<T>)
替代它 -
修改:对部分关键类用kotlin改写,如Parser相关类
- 修改:对JsonParam、JsonArrayParam 的add(String,Object)方法内部,去除对Object对象的空判断
-
新增:NoBodyParam类新增
List<KeyValuePair> getKeyValuePairs()
方法,以获取已添加的参数列表 -
修改:带进度下载时,若读取到的contentLength为-1,则尝试从响应头
Content-Range
中读取contentLengt;由于部分下载链接,在带进度断点下载的情况下,读取到contentLength为-1,导致进度回调不起作用,故做出此修改 -
修改:上传/下载进度回调由之前的最多回调101次,改为最多回调100次,将最后两次回调合并为一次,即将请求返回值和100%进度回调合并为一次,故进度回调将不会存在进度为-1的回调,开发者可直接删除Progress#isCompleted()判断代码
-
修改:由于不存在进度为-1的回调,故将Progress#isCompleted()方法改名为Progress#isFinish(),以此来提醒开发者无需再调用Progress#isCompleted()方法
-
修复:修复@Converter注解标注的变量声明为非IConverter类型时,编译报错问题。如声明为IConverter子类类型
-
修复:修复在自定义的Param类里自定义方法里,携带泛型/异常/可变参数 时,注解处理器生成对应的方法报错问题
-
新增:增加
RxHttp#asOkResponse()
方法,通过此方法,可以直接拿到okhttp3.Response
对象 -
新增:增加
RxHttp#asHeaders()
方法,通过此方法,可以直接拿到okhttp3.Headers
对象 -
修复:修复自定义解析器时,对于泛型增加边界、没有泛型、多个泛型情况,生成的asXxx方法报错问题
-
优化:消除RxHttp类里面的警告
-
修复:修复MapParser第二个泛型不赋值问题
-
修复:修复rxhttp-compiler1.4.0版本用
annotationProcessor
编译(kapt编译正常)报错,但不影响使用问题
-
新增:增加CookieStore类,支持内存、磁盘缓存cookie,自动读写cookie,详情请查看Cookie管理
-
修改:rxhttp及所有converter Module全改为Java工程,以支持Java项目依赖RxHttp
-
修改:rxhttp由于是java工程,故剔除了rxandroid库,如有用到,请手动添加到自己的项目中,如下:
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
- 修复1.3.5版本中,非默认缓存模式下,不添加任何参数,发送请求,出现空指针问题
-
新增:增加缓存功能,通过
RxHttpPlugins.setCache
系列方法,可设置全局缓存策略,通过RxHtto#setCacheMode
等方法,可为单个请求设置缓存策略;默认策略为不缓存 -
修改:内部对
add(String, Object)
方法判空,当Object为null时,默认添加""
空字符串
-
修改:RxHttp.get、postXxx等请求方法,输入的url支持占位符,如
RxHttp.get("/service/%1$s/%2$s/...", "query", 1)
-
修改:内置的GsonConverter,对Http返回结果解析前,对泛型做判断,如果泛型为String 类型,则直接返回,不再解析
-
新增:日志打印增加单个请求所消耗的时间
-
修复:修复1.3.1版本中使用OkHttp 3.12.x以下版本,发请求崩溃问题,原因,RxHttp内部使用了OkHttp高版本api
-
修改:日志打印格式微调
-
新增:IConverter接口,通过该接口可以快速接入Xml、ProtoBuf、FastJson等数据格式的解析
-
新增:新增RxHttp.setConverter(IConverter)静态方法,通过此方法可以为所有请求设置默认的Converter
-
新增:增加@Converter注解,使用该注解标明一个IConverter对象后,会在RxHttp中自动生成setXXXConverter()方法,通过此方法可以为单个请求设置转换器
-
新增:RxHttp、AbstractParam类增加tag(Class<? super T> type, T tag)方法;
-
新增:RxHttp类新增setResultDecoder(Function)、setDecoderEnabled(boolean)方法
-
修改:RxHttp类中setOnConverter(Function)、setConverterEnabled(boolean)方法标记为过时
-
修改:addAll(Map)方法,加入空判断,当value为空时,将不添加
-
修改:内置的Gson版本升级到2.8.5,未来版本将考虑不再内置Gson,采用外接的方式依赖Gson
-
修复:构建GsonBuilder对象时,加入disableHtmlEscaping配置,以修复base64上传文件时,会对"="等符号编码,导致上传文件失败问题
-
修复:修复上传文件时,log日志打印乱码问题
-
删除:RxHttp、AbstractParam类删除getCacheControl()、getTag()方法
-
新增:此版本无需使用任何注解,只需要依赖rxhttp、rxhttp-compiler两个库并使用Java 8,rebuild一下项目,即可生成RxHttp类
-
新增:RxHttp新增postJsonArray(String)、putJsonArray(String)等方法,通过此类方法可发送Json数组
-
新增:get、postForm请求支持同一个key添加多个参数
-
新增:get、postForm请求增加addEncoded(String,String)方法,以支持添加已编码的参数
-
新增:get、postForm请求增加removeAllBody(String)、set(String,String)、queryValue(String)等一系列方法,以全面支持对参数的增删改查
-
新增:postJson请求新增addJsonElement(String,String)方法,以支持通过字符串添加一个对象
-
修改:postJson方法,没有传参数时,默认传"{}"字符给服务器,之前版本传""空字符
-
修改:将RxHttp类中的一系列add方法(addHeader方法除外),移动到具体的实现类
-
修改:将RxHttp类中的add(Map)方法,改名为addAll(Map)方法
-
修改:get、postForm请求内部使用
List<KeyValuePair>
替代HashMap<String,Object>
对象存储参数 -
删除:get、postForm请求,内部不再使用
HashMap<String,Object>
存储请求参数,故删除了Map<String, Object> getParams()
方法 -
删除:postJson请求中的setJsonParams(String)、addJsonParams(String)方法被删除,由addAll(String)方法替代
- 修复部分用户反馈的,发送json请求时,因Content-Type不标准导致请求失败问题
-
新增:GsonUtil新增fromJson(String,Type)方法用于将json字符串转为对象,解析失败时,将抛出对应的异常,根据异常可知道解析失败原因,ErrorInfo类中可捕获该异常(JsonSyntaxException)。RxHttp内置解析器已全部使用此方法解析数据,
-
修改:NoBodyParam类直接使用HttpUrl拼接url及参数
-
新增:ParseException类增加requestResult字段,数据解析失败时,可通过该字段获取Http返回结果
-
新增:JsonParam增加addJsonParams(String)方法以替代setJsonParam(String)方法,该方法可调用多次,通过该方法添加的参数会和add(String,Object)方法添加的参数合并
-
新增:HttpSender类中的RxJava全局异常处理RxJavaPlugins.setErrorHandler中,增加日志打印,过滤RxJava即可
-
修改:修复发送PostJson请求时,通过add(String,Object)方法添加一个Bean类作为参数时,实际发送出去为空问题
-
修改:AbstractParam类不再继承HashMap类,改为采用组合的方法依赖HashMap
-
删除:删除ParseException、BuildUtil、HttpSender类中的过时方法
-
新增:Http 状态码 code < 200 || code >= 300,抛异常时会带上当前的返回值,可通过HttpStatusCodeException.getResult()方法获取
-
修改:RxHttp内部注册RxJava全局异常处理(RxJavaPlugins.setErrorHandler)时,会先判断是否已经注册,如果已注册则不再次注册,以修复之前注册的会失效问题
-
对Param内部结构进场了大调整,以修复Get、Head等请求依然可以调用addFile等方法问题
-
新增:FormParam新增setMultiForm()方法,以替代之前的PostMultiFormParam类
-
新增:自定义Param时,Param里面自定义的public方法,会自动在RxHttp相关类中生成同样的方法
-
删除GetParam、HeadParam这两个及相关类,如有使用,请用NoBodyParam类替代
-
删除PostFormParam、PutFormParam等表单请求类及相关类,如有使用,请用FormParam类替代
-
删除PostJsonParam、PutJsonParam等Json请求类及相关类,如有使用,请用JsonParam类替代
-
修复自定义Param,重写getRequestBody()方法,在里面调用addHeader方法添加头信息失效问题
-
修复1.1.7版本中,不带文件发送multipart/form-data请求时,出现空指针问题
-
增加PostMultiFormParam类,通过RxHttp.postMultiForm(String)方法可发送multipart/form-data类型请求
-
此版本RxHttp内部已注册RxJava全局异常处理(RxJavaPlugins.setErrorHandler),如果你之前注册的异常处理中有自己的业务逻辑,将注册代码放到RxHttp初始化之后即可,否则你的异常处理将失效。如果在异常处理中没有任何业务逻辑,可删除。
-
删除RxHttp类中的setProgressCallback方法
-
内部代码简化
-
增加一系列asUpload方法,通过该系列方法,可以更优雅的监听上传进度,之前的asUploadProgress方法标记为过时
-
增加一系列asDownload方法,通过该系列方法,可以更优雅的监听下载进度,之前的asDownloadProgress方法标记为过时
v1.1.5
-
修复在Kotlin编写的类上使用@Parser注解时,导致编译报错问题
-
升级此版本后,之前有自定义解析器的同学,请将带参的构造方法可见性改为public
v1.1.4
-
RxHttp类增加setOnConverter,可用户对Http返回的结果进行解密
-
RxHttp类增加setConverterEnabled(boolean),可对单个设置接口不解密
-
成功/失败回调日志里加入请求参数
v1.1.1
-
删除fromXXX等过时方法
-
支持使用RxHttp类进行初始化,之前使用HttpSender类初始化的用户不受影响
v1.1.0
- 上传文件时,根据文件名称,自动确定contentType,为空时,默认为application/octet-stream
v1.0.9
-
增加3个asMap方法,通过该方法,可将服务器返回的数据解析成Map对象
-
修复 HttpStatusCodeException 异常会打印两遍问题
-
兼容OkHttpClient添加HttpLoggingInterceptor拦截器后,上传文件时,进度会达到200%问题
v1.0.8
-
增加Http请求连接失败时的异常信息打印
-
修复1.0.7版本中,一处由注解的生成的方法错误问题
v1.0.7
-
RxHttp类增加一系列'subscribeOnXXX'方法,通过该系列方法,指定请求在某个线程执行
-
增加BitmapParser解析器,通过该解析器,可直接拿到Bitmap对象,详情查看asBitmap方法
-
RxHttp类增加一系列'asXXX'方法,替代'fromXXX'/'downloadXXX'/'uploadXXX'方法,被替代的方法标记为过时,将在未来的版本删除
-
增加HttpStatusCodeException异常类,可在OnError回调中捕获该异常
-
OkHttp 更新至3.14.1,RxJava更新至2.2.8版本,RxAndroid 更新至2.1.1版本
-
HttpSender中一些方法标记为过时,这些方法将在未来的版本中删除,请尽快使用新方法替代
v1.0.5
-
增加一系列'addFile'方法,支持同一个key添加多个文件
-
PostFormParam增加setUploadMaxLength方法,以限制文件上传最大长度
v1.0.4
- RxHttp类增加setRangeHeader、downloadProgress(String,Long)方法,以更好的支持断点下载
v1.0.3
- RxHttp增加 setJsonParams(String) 方法,Json形式的请求直接调用此方法传入Json字符串参数
v1.0.2
- 增加@DefaultDomain注解,通过该注解,可以设置baseUrl;