ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

android – 如何使用RxJava2 et Retrofit2处理无内容响应

2019-07-06 02:26:20  阅读:276  来源: 互联网

标签:android retrofit2 rx-java2


我正在使用RxJava 2& Retrofit 2(https://github.com/JakeWharton/retrofit2-rxjava2-adapter),我想知道如何处理无响应(204)类型.
在rxjava1中我使用了Observable< Void>但rxjava2不允许这样做(https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-2.0 – > Nulls)

现在,我已经破解了绕过自定义类型的Json解析(我称之为NoContent),但我想知道是否有更好的方法.

编辑:

public class NoContent {
    public static class GsonTypeAdapter extends TypeAdapter<NoContent> {

        @Override
        public void write(JsonWriter out, NoContent value) throws IOException {
           out.nullValue();
        }

        @Override
        public NoContent read(JsonReader in) throws IOException {
           return new NoContent();
        }
    }
}

解决方法:

您可以使用Completable,Observable< ResponseBody>或可观察的<响应< T>>在这种情况下,您将获得204响应而不会获得转换器异常.

这里最好的选择可能是使用Completable作为返回类型.来自服务器的所有2xx响应都将以onComplete结尾.其他将最终在onError.

在ResponseBody的情况下,所有类型的有效HTTP响应都不会转换为Object,最终将在onNext中,包括4xx和5xx响应.

在响应< T>的情况下只会转换2xx个响应,包括HTTP 204响应代码.所以我不确定你应该使用它,虽然在这种情况下所有有效的HTTP响应也将在onNext中结束,包括4xx和5xx响应.

标签:android,retrofit2,rx-java2
来源: https://codeday.me/bug/20190706/1393198.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有