[英]How to handle No Content response using RxJava2 et Retrofit2
我正在使用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>
或Observable<Response<T>>
,如果您要獲得204
響應而不會獲得轉換器異常。
這里最好的選擇可能是使用Completable
作為返回類型。 來自服務器的所有2xx
響應都將以onComplete
結尾。 其他將最終在onError
。
在ResponseBody
情況下,所有類型的有效HTTP響應都不會轉換為Object,最終將在onNext
,包括4xx
和5xx
響應。
在Response<T>
情況下,將僅轉換2xx個響應,包括可能的HTTP 204
響應代碼。 所以我不確定你應該使用它,雖然在這種情況下所有有效的HTTP響應也將在onNext
結束,包括4xx
和5xx
響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.