解决在kotlin下,Retrofit +RxJava2 返回数

2020-05-29  本文已影响0人  请叫我果爸

最近因为服务端重构代码,采用redius标准返回,code是在responce中返回,data中不在包含业务code和message,只有纯纯的数据。这就导致了有些请求不需要返回数据,只需要判断code为200就是成功了。这时候如果是在kotlin下,使用Retrofit+RxJava2网络框架就会出错。
会出现java.lang.NullPointerException: Null is not a valid element的bug
或者
出现java.io.EOFException: End of input at line 1 column 1 path $错误

百度了各种解决办法,有些根本是错误的,不满足我的业务需求。
最后终于找到一个有用的办法。

1.改用Call<ResponseBody>作为返回值。但是请求方法也要改变了。

    @POST("/demo")
    fun postNotData(): Call<Void>

2.可以将返回Observable<ResponseBody>改为Observable<Response<Void>> 作为返回值(推荐)

    @POST("/demo")
    fun postNotData(): Observable<Response<Void>>

3.可以将返回Observable<T>,设置T允许为空,就是设置为Observable<T?>
···
@POST("/demo")
fun postNotData(): Observable<String?>
···

上一篇下一篇

猜你喜欢

热点阅读