美文网首页
解决在kotlin下,Retrofit +RxJava2 返回数

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

作者: 请叫我果爸 | 来源:发表于2020-05-29 16:50 被阅读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?>
    ···

    相关文章

      网友评论

          本文标题:解决在kotlin下,Retrofit +RxJava2 返回数

          本文链接:https://www.haomeiwen.com/subject/ochfzhtx.html