2016-11-21 7 views
3

Ich verwende RxJava 2 & Retrofit 2 (https://github.com/JakeWharton/retrofit2-rxjava2-adapter) und ich frage mich, wie keine Antwort (204) Typ zu behandeln. In rxjava1 i Observable<Void> wurde mit, aber es ist nicht mehr von rxjava2 erlaubt (https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0 -> NULL-Werte)Wie keine Inhalte Antwort mit RxJava2 et Retrofit2 zu handhaben

jetzt richtig, ich um gehackt habe Json Parsing auf einem benutzerdefinierten Typ zu umgehen (rief ich es nocontent), aber ich habe mich gefragt, wenn es einen besseren Weg gibt.

EDIT:

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(); 
     } 
    } 
} 
+0

Ich habe ähnliches Problem, noch keine Lösung? –

+0

Nicht dass ich mir dessen bewusst bin; – Romain

Antwort

0

können Sie verwenden Completable, Observable<ResponseBody> oder Observable<Response<T>> im Fall, dass Sie 204 Antworten, ohne sich Konverter Ausnahmen erhalten gehen.

Wahrscheinlich die beste Option hier ist Completable als Rückgabetyp zu verwenden. Alle 2xx Antworten vom Server werden in onComplete enden. Andere enden in onError.

Bei ResponseBody alle Arten von gültigen HTTP-Antworten werden nicht an Objekt umgewandelt und wird in onNext, einschließlich 4xx und 5xx Antworten enden.

Im Fall von Response<T> werden nur 2xx Antworten konvertiert, einschließlich, wahrscheinlich HTTP 204 Antwortcode. Ich bin mir also nicht sicher, ob Sie es verwenden sollten, obwohl alle gültigen HTTP-Antworten in diesem Fall auch in onNext, einschließlich 4xx und Antworten landen.

Verwandte Themen