繁体   English   中英

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

[英]How to handle No Content response using RxJava2 et Retrofit2

我正在使用RxJava 2Retrofit 2https://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();
        }
    }
}

您可以使用CompletableObservable<ResponseBody>Observable<Response<T>> ,如果您要获得204响应而不会获得转换器异常。

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

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

Response<T>情况下,将仅转换2xx个响应,包括可能的HTTP 204响应代码。 所以我不确定你应该使用它,虽然在这种情况下所有有效的HTTP响应也将在onNext结束,包括4xx5xx响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM