Retrofit 2.0, wie deserialised error response.body
Ich bin mit Retrofit-2.0.0-beta1.
In tests habe ich ein Alternatives Szenario und erwarten, dass Fehler HTTP 400
Ich würde gerne retrofit.Response<MyError> response
aber response.body() == null
MyError ist nicht deserialised - ich sehe es nur hier
response.errorBody().string()
aber es nicht geben Sie mir MyError as object
Kommentar zu dem Problem
seine einfache futurestud.io/tutorials/retrofit-2-einfach-Fehler-handling
ist es eine gute Praxis, deserialise die Fehlerantwort? da die Antwort könnte ein webserver Fehler, das ist html.
InformationsquelleAutor der Frage Piotr Boho | 2015-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Derzeit benutze ich eine sehr einfache Implementierung, die nicht erforderlich ist, zu verwenden-Konverter oder spezielle Klassen. Der code, den ich verwenden, ist die folgende:
InformationsquelleAutor der Antwort Saif Bechan
InformationsquelleAutor der Antwort Vins
Diese Weise brauchen Sie nicht, eine Nachrüstung Beispiel, wenn Sie nur Spritzen ein service erstellt von Retrofit.
Verwenden Sie es wie diese:
InformationsquelleAutor der Antwort Codeversed
Dieser scheint das problem zu sein, wenn Sie verwenden, OkHttp zusammen mit Retrofit, also entweder Sie entfernen können, OkHttp oder verwenden Sie folgenden code, die Fehlermeldung Körper:
InformationsquelleAutor der Antwort KRUPEN GHETIYA
Wie über einige generalisierte Lösung, die ich denke, so etwas kann funktionieren:
Dann können wir diese benutzerdefinierte
Callback<>
in der folgenden Weise:InformationsquelleAutor der Antwort fraggjkee
gelöst von:
InformationsquelleAutor der Antwort Piotr Boho
InformationsquelleAutor der Antwort Mike6679
In Kotlin:
InformationsquelleAutor der Antwort Adam Johns
errorBody Werte sollten APIError Objekt in der Nachrüstung. So dass Sie können verwenden Sie die folgenden code-Struktur.
public class APIErrorUtils {
}
APIError Fehler = APIErrorUtils.parseError(Antwort);
wenn (Fehler.getStatus() == 400){
....
}
InformationsquelleAutor der Antwort Egemen Mede
Kotlin
Java
InformationsquelleAutor der Antwort Shahab Rauf