簡體   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