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

时间:2016-11-21 11:37:20

标签: android retrofit2 rx-java2

我正在使用Observable<Void>&amp; 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(); } } } issue #32)我想知道如何处理无响应(204)类型。 在rxjava1中我使用users但rxjava2不再允许它(https://github.com/JakeWharton/retrofit2-rxjava2-adapter - &gt; Nulls)

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

编辑:

tasks

1 个答案:

答案 0 :(得分:1)

如果您要获得Completable响应,则可以使用Observable<ResponseBody>Observable<Response<T>>204,而不会获得转换器例外。

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

如果ResponseBody,所有有效的HTTP响应都不会转换为对象,最终会以onNext结尾,包括4xx5xx响应。

如果Response<T>只会转换2xx个响应,包括可能是HTTP 204响应代码。所以我不确定您是否应该使用它,尽管在这种情况下所有有效的HTTP响应也会以onNext结尾,包括4xx5xx响应。