-
-
Notifications
You must be signed in to change notification settings - Fork 466
更新日志
| RxHttp版本 | Kotlin版本 | ksp版本 | 协程版本 |
|---|---|---|---|
| v3.3.5~v3.5.0 | v2.2.0 | v2.2.0-2.0.2 | v1.10.2 |
| v3.3.3~v3.3.4 | v2.1.21 | v2.1.21-2.0.1 | v1.10.1 |
| v3.3.2 | v2.1.10 | v2.1.10-1.0.30 | v1.10.1 |
| 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 |
- 适配
okhttp v5.x.x版本
-
新增
safeAsync方法,并将async标记为过时,以修复协程并行任务问题#533(注:不要无脑使用safeAsync替换async, 应使用supervisorScope + safeAsync替换async) -
修改:kotlin升级至
v2.2.0; ksp升级至v2.2.0-2.0.2;协程版本升级至v1.10.2
- 修改:RxJava环境下,捕获callFactory.newCall()异常,避免因url不规范等问题导致闪退,与Await、Flow保持同步
-
修改:kotlin升级至
v2.1.21; ksp升级至v2.1.21-2.0.1 -
修改:对
awaitResult/safeAwait/tryAwait/retry/onErrorReturn5个异常处理方法,更改内部逻辑,遇到JobCancellationException异常时,不再捕获,将直接抛出,避免协程关闭后,协程内部代码依然继续执行问题,与Flow异常处理逻辑保持同步
- 修改:kotlin升级至
v2.1.10; ksp升级至v2.1.10-1.0.30; 协程升级至v1.10.1 - 修复
Await<T>.flowOn方法注释不对问题
- 修改:对于获取字符串数据,不再通过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, @Converter4个注解不需要依赖@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-compilerokhttp的版本号 -
修改:可以在任意时机设置全局缓存策略(之前只能在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;