- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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)
现在,我已经绕过自定义类型(我称之为 NoContent)的 Json 解析,但我想知道是否有更好的方法。
编辑:
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>
或 Observable<Response<T>>
在这种情况下你会得到 204
没有得到转换器异常的响应。
这里最好的选择可能是使用 Completable
作为返回类型。全部2xx
来自服务器的响应将以 onComplete
结束。 .其他将以 onError
结尾.
如果是ResponseBody
所有类型的有效 HTTP 响应都不会被转换为对象,并且最终会在 onNext
中结束。 , 包括 4xx
和 5xx
回应。
如果是Response<T>
只有 2xx 响应会被转换,可能包括 HTTP 204
响应代码。所以我不确定你应该使用它,尽管在这种情况下所有有效的 HTTP 响应也将以 onNext
结束。 , 包括 4xx
和 5xx
回应。
关于android - 如何使用 RxJava2 和 Retrofit2 处理 No Content 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719239/
我是一名优秀的程序员,十分优秀!