Skip to content

更新日志

liujingxing edited this page Sep 26, 2022 · 188 revisions
Clone this wiki locally

v3.0.0-beta4 (测试版本具有不稳定性,不建议线上环境使用)

2022-09-26

  • 新增:asXxx/toXxx/toFlowXxx方法泛型支持传入OkResponse<T>,可同时获得任意Bean类、请求头等数据,例如toClass<OkResponse<List<User>>>

  • 新增:RxJava环境下,新增asXxx(Type)方法,可传入任意泛型类型

  • 新增:Flow环境下新增toFlowString/toFlowList/toFlowMapString/toFlow(Parser)方法

  • 新增:RxJava环境下,新增onProgress/onMainProgress方法,上传/下载进度监听,统一使用该方法,可直接在UI线程回调,之前的进度监听方法被移除

  • 修改:asMap/toMap方法改为asMapString/toMapString,输入一个泛型即可

  • 修改:setSync改为syncRequest,并且需要在asXxx方法后调用

  • 修改:更改默认OkHttpClient对象,默认不信任自签名证书https网站;公共参数接口由Function改为Consumer,并且接口方法返回值改为void

  • 修改:带进度断点下载适配If-Range请求头

  • 修改:SimpleParser.kt改名为SmartParser.kt, IConverter.java改名为Converter.java

  • 删除:移除RxHttp#setUploadMaxLength(int)方法,移除所有的过时方法及类

v2.9.5

2022-09-19

  • 优化:部分代码优化,使得jar包大小由v2.9.3版本的327k减小到269k

  • 修复:关闭issue#407,结合RxJava发请求,监听文件上传进度,偶现回调进度局部错乱问题

  • 修改:消除部分警告,更改部分注释

v2.9.3

2022-08-25

  • 新增:所有的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对基本类型数据的序列化过程,以避免serializeSpecialFloatingPointValueslongSerializationPolicy两个配置失效问题

  • 修改:为所有的过时方法/类,增加注释scheduled to be removed in RxHttp 3.0 release.,计划在3.0版本中移除这些方法/类

v2.9.2

2022-08-15

  • 新增:Json日志支持格式化输出,通过RxHttpPlugins#setDebug(true, true, 2)方法第三个参数,可设置缩进空间

  • 修改:Gson版本升级至v2.9.1

  • 修改:对于自定义解析器,仅检索public构造方法,不再要求提供无参构造方法

  • 修改:规避#396中,因开启混淆优化后,发请求报Missing type parameter异常问题

v2.9.1

2022-08-07

  • 新增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

v2.9.0

2022-07-07

  • 修改:对缓存相关参数(缓存大小、缓存有效期)做合法性校验

  • 修改:http 状态码为416时,不读取body,以避免body过大,造成oom问题

  • 修改:自定义解析器onParse方法支持返回null(注:仅限协程环境下才支持)

  • 修复部分场景下,即使开启分段打印,日志依然打印不全问题

v2.8.9

2022-06-21

  • kotlin版本升级至1.7.0,kotlinx-coroutines-android版本升级至1.6.3

  • ksp版本升级至1.7.0-1.0.6

  • ksp编译下,RxHttp.get/postXxx系列方法第二个参数改为可空类型

v2.8.8

2022-05-24

  • 修复ksp编译生成的get/postXxx系列方法,传入第二个参数时,抛出IllegalFormatConversionException异常,导致崩溃问题,kapt/annotationProcessor编译无此问题

v2.8.7

2022-04-23

  • kotlin版本升级至1.6.21

  • ksp版本升级至1.6.21-1.0.5

  • 兼容okhttp 4.9.2及以上版本,敏感请求/响应头AuthorizationCookieProxy-AuthorizationSet-Cookie日志不打印问题

  • 调整NoBodyParamFormParamJsonParamJsonArrayParamtoString方法,避免没域名时,debug不显示具体值问题

v2.8.6

2022-04-05

  • kotlinx-coroutines-android升级至v1.5.2版本

  • 反序列化为null时,抛出异常,以修复协程环境下非空类型数据遇到null时崩溃问题

v2.8.5

2022-03-03

  • 修改:修改ksp编译错误提示

  • 修改:解析器泛型有非Any/Object类型边界时,将不再处理Parser注解里wrappers字段

v2.8.4

2022-02-18

  • 修复ksp编译时,依赖okhttp 4.0以下版本,编译报错问题(类型安全问题)

v2.8.3

2022-01-12

  • Gson处理反序列化时,对int、long、double基本类型数据做容错处理

v2.8.2

2021-12-18

  • 修复由资源改动触发ksp增量编译时,注解失效问题

v2.8.1

2021-12-15

  • 修改:Kotlin版本升级至v1.6.10

  • 修改:ksp编译下,RxHttp等相关类使用Kotlin编写,此时,使用@defaultDomain, @domian, @okClient, @Converter4个注解不需要依赖@JVMField注解

v2.8.0

2021-11-23

  • 新增:正式支持google/ksp,详情点击ksp、kapt、annotationProcessor 用法及区别

  • 新增:若使用ksp编译,@DefaultDomain@Domian@OkClient@Converter注解,可在顶级变量或伴生对象中使用

  • 修改:Kotlin版本升级至v1.6.0, Gson版本升级至v2.8.9

  • 修复自定义解析器构造方法有可变参数时,生成的toFlowXxx方法编译报错问题

v2.7.3

2021-11-08

  • 新增addPath(String,Object)、addEncodedPath(String,Object)方法,以支持替换url中的{xxx}字符串

  • 修改:将Param接口改为抽象类,以兼容因aar引发的java.lang.NoSuchMethodError异常

v2.7.2

2021-10-26

  • 修复v2.7.1版本中,对于自定义解析器,未声明两个必需的构造方法时,编译没有定位到具体代码问题

  • 修复v2.7.1版本中的LogInterceptor日志打印类,未兼容OkHttp v4.0以下版本问题

v2.7.1

2021-10-18

  • 新增toFlowBitmap/toFlowHeaders/toFlowOkResponse方法

  • 修改:调整请求开始日志打印时机,待请求真正执行时打印

v2.7.0

2021-09-25

  • kotlin版本升级至v1.5.31kotlinx-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等一系列返回基本类型的方法

v2.6.8

2021-09-04

  • 适配 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', 
    ]
}

v2.6.7

2021-09-01

  • 修复 RxHttp v2.6.6版本与Hilt配合使用,编译报错问题

  • 修复 RxHttp v2.6.5以上版本与OkHttp v3.14.0以下版本配合使用,请求开始日志打印失败问题

v2.6.6

2021-08-24

  • 修复fun Uri?.length(contentResolver: ContentResolver): Long方法,内部没有及时将ParcelFileDescriptor关闭问题

  • 修复IAwait<T>.async方法,协程关闭时,请求无法关闭问题

v2.6.5

2021-07-07

  • 新增:FileRequestBody类,文件上传统一使用该类实现,并且支持跳过skipSize个字节,以更好的支持断点上传

  • 新增:UriRequestBody类增加skipSize字段,上传时支持跳过skipSize字节,以更好的支持断点上传

  • 修改:kotlin版本升级至1.5.20

  • 修改:更改日志打印逻辑,对于FileRequestBodyUriRequestBody类,不再打印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.6.4

2021-06-24

  • 修复v2.5.1以上版本调用FormParam#set(String, String)、FormParam#removeAllBody(String)会将之前添加的参数清空问题

v2.6.3

2021-06-24

  • 新增IAwait<T>.repeat操作符,以支持轮训请求

  • 更改IAwait<T>.retry操作符的times参数为Long类型

  • 更改:将fastjson、moshi等第三方版本库升级至最新

  • 修复日志打印,当请求数据过大时,请求总耗时误差大问题

v2.6.2

2021-06-11

  • 新增:增加TypeParser解析器,该解析器支持多个泛型,并将AbstractParser解析器标记为过时,使用TypeParser替代

  • 新增:增加两个IRxHttp.awaitResult()方法

  • 修改:自定义解析器,构造方法支持传入可变参数类型及数组类型

  • 修改:Android 10下载兼容okhttp 4.0以下版本

  • 修改:kotlin版本升级至1.5.10

v2.6.1

2021-05-20

  • 新增:为IAwait下的tryAwait方法增加异常回调参数;为awaitResult方法增加成功回调参数

  • 新增:TypeUtil类下新增Array<Type> getActualTypeParameters(Class)方法,并将该类改为kotlin编写

  • 修改:将上传的body最大值设置为Long.MAX_VALUE(之前Integer.MAX_VALUE)

  • 修改:一些注释更改及内部代码简化

v2.6.0

2021-05-11

  • 新增: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();         //配置公共参数/请求头            

v2.5.7

2021-03-14

  • 修改:删除RxHttp#setOkClient(OkHttpClient)方法中的org.jetbrains.annotations.NotNull注解

  • 修复:修复RxHttpJsonParam#addAll(String)方法,对于超大整型、浮点型数据,序列化过程精度丢失问题

v2.5.6

2021-03-06

  • 修改:kotlin版本升级至v1.4.31,协程版本升级至v1.4.2

  • 修改:Uri#asPartBodyParam#setBody方法兼通okhttp 4.0以下版本

v2.5.5

2021-02-19

  • 修改:IRxHttp#toXxxFlow方法增加CoroutineContext参数,并赋于默认值EmptyCoroutineContext

  • 修复:修复BodyParam#setJsonBody(T)方法报IllegalStateException异常问题

  • 修复:修复自定义解析器时,onParse方法参数里加上注解时,asResponse方法不生成问题

v2.5.4

2021-01-24

  • 新增:postForm请求下新增一系列setMultiXxx方法,以支持更多的multipart类型

  • 新增:postForm请求下新增addFiles(List<T>)addFiles(Map<String,T>)方法,替代之前的addFile(List<File>)addFile(Map<String,File>)

  • 更改:调整日志打印格式,日志打印新增Cookie、Accept-Encoding等请求头;对url、请求体、响应体,输出时不在进行UrlDecoder处理;对于MultipartBody,采用全新的日志打印格式,更加直观的看出请求体都有哪些东西

v2.5.3

2020-12-27

  • 更改:兼容Content-Disposition响应头,filename带有单引号/无引号的情况

  • 更该:对于multipart/form-data 请求,添加的单个参数大于1k时,将该参数省略打印

v2.5.2

2020-12-20

  • 新增:增加BodyParam类,通过RxHttp.postBody(String)方法,可发送byte数组、文本、Uri、File等任意形式的RequestBody对象

  • 更改:从Content-Disposition响应头取文件名时,根据里面的编码方式去自动编码

v2.5.1

2020-12-15

  • 新增: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)方法

v2.4.4

2020-11-22

  • 新增:RxHttp类下新增addNonAsciiHeader(String, String)setNonAsciiHeader(String, String)方法,以支持添加非Ascii码字符的请求头

  • 修复:修复响应头里有非Ascii码字符存入到缓存时,下次读取缓异常问题

  • 修改:调整日志打印格式,已更直观的方式看到状态码、请求耗时等信息

v2.4.3

2020-11-15

  • 新增:支持分段打印日志,调用RxHttp.setDebug(boolean, boolean)方法,第二个参数设置为true,日志过长时,就会将日志分段打印

  • 修改:文件下载,未传入文件名时,如:/storage/emulated/0/Android/data/com.example.rxhttp/cache/%s, 优先从Content-Disposition响应头里取文件名,没有,则从url里截取文件名

  • 修复:修复通过addPart系列方法,上传沙盒目录下的文件失败问题

v2.4.2

2020-11-09

  • 修改:内部自动识别okhttp版本号,无需再通过rxhttp_okhttp参数告知rxhttp-compiler okhttp的版本号

  • 修改:可以在任意时机设置全局缓存策略(之前只能在rxhttp初始化后设置)

v2.4.1

2020-09-26

  • 新增:新增一系列asAppendDownloadtoAppendDownloadtoAppendDownloadFlow方法,以更好的支持断点下载

  • 新增:RxHttp.postForm请求下新增addFile(Map<String,File>)方法

  • 修复:偶现下载到100%时,100%进度不会调问题

  • 修复:解决文件名带#号的文件上传失败问题

v2.4.0

2020-09-14

  • 新增:对于RxHttp.postForm请求,新增一系列addPart方法,以支持Android 10文件上传,可直接通过Uri对象上传文件

  • 新增:新增一系列asDownloadtoDownload方法,以支持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方法替代

v2.3.5

2020-08-15

  • 修改:更改自定义解析器的校验逻辑,对带有泛型的解析器,先校验无参构造方法,后校验java.lang.reflect.Type类型参数的构造方法,其它构造方法不校验

  • 修改:上传文件时,对文件进行校验,不符合直接抛出异常

  • 修复:修复async操作符,异常向上传播,导致父协程关闭问题

  • 修复:修复自定义解析器,没有声明泛型时,不生成toXxx方法问题

  • 修复:修复自定义解析器,构造方法有Java基本类型参数时,生成的toXxx方法,未将Java基本类型参数转换为kotlin基本类型参数问题

  • 修复:解决MoshiConverter解析String类型失败问题

  • 删除:删除Parser#getResult(Response)过时方法,可使用Parser#convert(Response,String.class)替代

  • 删除:删除RxJava三部曲下的await方法

v2.3.4

2020-08-09

  • 新增:RxHttp下新增connectTimeout、readTimeout、writeTimeout方法,通过该类方法可对单个请求设置连接、读、写超时

  • 新增:文件下载时,传入的本地文件路径,可通过Java标准占位符替代文件名,如:.../test/%s,此时,内部会截取url中的文件名与之替代

  • 新增:增加MoshiConverter,以支持Moshi解析

v2.3.3

2020-08-03

  • 新增:协程环境下增加flowOn操作符,通过该操作符可指定上游所在线程

  • 新增:协程环境下增加asFlow操作符,通过该操作符可将当前流转为kotlin Flow

  • 新增:协程环境下增加awaitResult操作符,通过该操作符,可获得kotlin.Result对象

  • 新增:协程环境下增加insert/filter/distinct/sort/subList/take/等一系列作符,可对服务端返回的列表执行插入/过滤/去重/排序等操作

  • 新增:增加一系列RxHttp#executeXxx方法,用于执行同步请求,通过返回值获取结果

  • 修复:解决postJson类型请求,通过addAll(JsonObject)等与Gson相关的方法添加参数时,使用FastJsonConverter序列化失败问题

  • 修复:解决FastJsonConverter/JacksonCoverter/XmlConverterconvert方法内部不执行解密回调问题

v2.2.8

2020-07-05

  • 修改:v2.2.8版本起,内部自带混淆规则,故该版本起,可无需在项目中添加混淆代码

  • 修改:将upload(Consumer,Scheduler)方法标记为过时,新增upload(Scheduler,Consumer)方法替代;将upload(CoroutineScope,Progress)方法第一个参数改为必填

  • 修改:通过toDownload方法设置的进度回调,支持在suspend方法中回调

  • 修复:修复Android 5.0以下系统,通过RxHttp.setDebug(true)开启Debug模式后,发请求始终走失败问题

v2.2.7

2020-06-06

  • 修复RxHttp 2.2.2及以上版本,依赖okhttp 3.x版本时,执行下载任务失败问题

v2.2.6

2020-06-02

  • 修复v2.2.5版本中,使用@Domain注解,没指定className 字段时,编译报错问题

v2.2.5

2020-05-31

  • 新增:增加@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()方法替代

v2.2.4

2020-05-25

  • 新增HttpsUtils处理https,支持自签名证书,双向认证,详细用法请查看关于Https

  • 修改:适配okhttp 4.7.x版本

  • 修复:解决postFrom请求,添加进度回调时,logcat不输出请求参数问题

v2.2.3

2020-05-19

  • 修复RxHttp v2.2.2版本中,依赖OkHttp 3.x版本,使用Cookie、缓存功能时,会抛出NoSuchMethodError错误问题

v2.2.2

2020-05-17

  • 新增:自定义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版本号

v2.2.1

2020-05-10

  • 新增:增加RxHttp#addAllHeader方法,以支持一次性添加多个header

  • 修复:解决RxHttp#getUrl()方法抛异常问题,当传入的url没有域名时

  • 修复:解决协程RxHttp#async操作符异步任务失效问题

v2.2.0

2020-04-19

v2.2.0更新指南

  • 新增:协程发送请求支持缓存

  • 新增:协程环境新增toXxxmapdelaystartDelayonErrorReturnasynctryAwait等操作符,具体用法请查看RxHttp ,比Retrofit 更优雅的协程体验

  • 新增:RxHttp类新增dispose(Disposable)isDisposed(Disposable)两个静态方法,用于关闭Disposable对象

  • 新增:RxHttpPlugins类新增cancelAllcancelAll(tag)两个静态方法,用于关闭所有请求及设置了tag的请求

  • 修改:将RxJavaRxHttp中完全删除,采用外接方式替代,适配RxJava3,并兼容RxJava2详情点这里

  • 修改:由于内部已完全剔除了RxJava,将groupId,由之前的com.rxjava.rxhttp改为com.ljx.rxhttp

  • 修改:将setOnParamAssemblysetResultDecoder方法要传入的Function接口对象,包名由之前的io.reactivex.functions改为rxhttp.wrapper.callback,如用到,请导入新的包,用Lambda表达式用户不受影响

  • 修复:修复自定义解析器没有泛型,使用@Parser注解时,编译器报错问题

  • 修复:修复RxHttpFormParam.upload(CoroutineScope,(Progress) -> Unit)方法返回类型错误问题

  • 修复:修复使用RxLifeScope开启协程时,间接子协程出异常时,没有捕获问题,需要依赖RxLife-Coroutine最新版本以解决此问题

  • 删除:将asUpload、awaitUpload等过时方法删除

  • 删除:将内部的ListParserMapParser删除,使用ParameterizedTypeImpl类组合泛型实现asMap、asList方法

v2.1.1

2020-03-29

  • 新增:@Parser注解新增wrappers属性,通过该属性,可以生成任意个asXxx方法,比如常用的asResponseListasResponsePageList方法,就不再需要自定义多个解析器去生成了。详情查看自定义Parser

  • 新增:自定义Param时,支持自定义泛型

  • 新增:HttpSender类新增newOkClientBuilder()方法,可拿到OkHttpClient.Builder对象

  • 新增:表单请求RxHttpFormParam新增upload(Consumer,Scheduler),通过该方法,可以单独设置上传进度回调

  • 修改:将一系列asUploadawaitUpload方法标记为过时,将在未来版本中删除,请使用upload+asXxxupload+awaitXxx组合替代

  • 修复:修复协程失败重试时,会多次构建okhttp3.Requeat对象问题

  • 修复:修复协程发送请求,出异常时,无日志打印问题

v2.1.0

2020-03-23

  • 新增:新增RxHttp#retryRxHttp#timeout两个,以支持在协程环境中,设置重试、超时机制

  • 新增:新增RxHttpFormParam.upload(CoroutineScope,Progress)方法,通过该方法可单独配置上传进度的监听,仅在协程下可用

  • 修改:将Progress类 改为 Progress,删除泛型T,新增ProgressT类与之替代

  • 修复:修复调用asXxx方法发送请求时,遇到失败重试机制时,对多次构建Request对象问题

  • 修复:修复用RxHttp#buildRequest()方法构造Request对象时,不添加默认域名,不添加公共参数等问题

  • 删除:删除HttpSender.newCall(OkHttpClient,Param)方法

v2.0.0

2020-03-17

  • 新增一系列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#setConverterEnabledRxHttp#setOnConverter ,使用RxHttp#setDecoderEnabledRxHttp#setResultDecoder方法替代

  • 修改:对RxHttp子类的命名方式由之前的RxHttp$XxxParam,改为RxHttpXxxParam,删除了$符号

  • 修改:对add(String,File)标记为过时,请尽快使用addFile(String,File)方法替代

  • 修改:将asObject(Class<T>)标记为过时,新增asClass(Class<T>)替代它

  • 修改:对部分关键类用kotlin改写,如Parser相关类

v1.4.4

2020-03-04

  • 修改:对JsonParam、JsonArrayParam 的add(String,Object)方法内部,去除对Object对象的空判断

v1.4.3

2020-03-01

  • 新增: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类里自定义方法里,携带泛型/异常/可变参数 时,注解处理器生成对应的方法报错问题

v1.4.2

2020-01-19

  • 新增:增加RxHttp#asOkResponse()方法,通过此方法,可以直接拿到okhttp3.Response对象

  • 新增:增加RxHttp#asHeaders()方法,通过此方法,可以直接拿到okhttp3.Headers对象

  • 修复:修复自定义解析器时,对于泛型增加边界、没有泛型、多个泛型情况,生成的asXxx方法报错问题

v1.4.1

2020-01-09

  • 优化:消除RxHttp类里面的警告

  • 修复:修复MapParser第二个泛型不赋值问题

  • 修复:修复rxhttp-compiler1.4.0版本用annotationProcessor编译(kapt编译正常)报错,但不影响使用问题

v1.4.0

2019-12-30

  • 新增:增加CookieStore类,支持内存、磁盘缓存cookie,自动读写cookie,详情请查看Cookie管理

  • 修改:rxhttp及所有converter Module全改为Java工程,以支持Java项目依赖RxHttp

  • 修改:rxhttp由于是java工程,故剔除了rxandroid库,如有用到,请手动添加到自己的项目中,如下:

implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

v1.3.6

2019-12-23

  • 修复1.3.5版本中,非默认缓存模式下,不添加任何参数,发送请求,出现空指针问题

v1.3.5

2019-12-21

  • 新增:增加缓存功能,通过RxHttpPlugins.setCache系列方法,可设置全局缓存策略,通过RxHtto#setCacheMode等方法,可为单个请求设置缓存策略;默认策略为不缓存

  • 修改:内部对add(String, Object)方法判空,当Object为null时,默认添加""空字符串

v1.3.4

2019-12-13

  • 修改:RxHttp.get、postXxx等请求方法,输入的url支持占位符,如RxHttp.get("/service/%1$s/%2$s/...", "query", 1)

  • 修改:内置的GsonConverter,对Http返回结果解析前,对泛型做判断,如果泛型为String 类型,则直接返回,不再解析

v1.3.2

2019-11-30

  • 新增:日志打印增加单个请求所消耗的时间

  • 修复:修复1.3.1版本中使用OkHttp 3.12.x以下版本,发请求崩溃问题,原因,RxHttp内部使用了OkHttp高版本api

  • 修改:日志打印格式微调

v1.3.1

2019-11-27

  • 新增: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()方法

v1.3.0

2019-11-18

  • 新增:此版本无需使用任何注解,只需要依赖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)方法替代

v1.2.4

2019-11-07

  • 修复部分用户反馈的,发送json请求时,因Content-Type不标准导致请求失败问题

v1.2.3

2019-10-30

  • 新增:GsonUtil新增fromJson(String,Type)方法用于将json字符串转为对象,解析失败时,将抛出对应的异常,根据异常可知道解析失败原因,ErrorInfo类中可捕获该异常(JsonSyntaxException)。RxHttp内置解析器已全部使用此方法解析数据,

  • 修改:NoBodyParam类直接使用HttpUrl拼接url及参数

v1.2.2

2019-10-23

  • 新增: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类中的过时方法

v1.2.1

2019-09-26

  • 新增:Http 状态码 code < 200 || code >= 300,抛异常时会带上当前的返回值,可通过HttpStatusCodeException.getResult()方法获取

  • 修改:RxHttp内部注册RxJava全局异常处理(RxJavaPlugins.setErrorHandler)时,会先判断是否已经注册,如果已注册则不再次注册,以修复之前注册的会失效问题

v1.2.0

2019-09-16

  • 对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请求时,出现空指针问题

v1.1.7

2019-09-07

  • 增加PostMultiFormParam类,通过RxHttp.postMultiForm(String)方法可发送multipart/form-data类型请求

  • 此版本RxHttp内部已注册RxJava全局异常处理(RxJavaPlugins.setErrorHandler),如果你之前注册的异常处理中有自己的业务逻辑,将注册代码放到RxHttp初始化之后即可,否则你的异常处理将失效。如果在异常处理中没有任何业务逻辑,可删除。

  • 删除RxHttp类中的setProgressCallback方法

  • 内部代码简化

v1.1.6

2019-08-16

  • 增加一系列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;