Im Moment verwenden wir Retrofit wie folgt:
%Vor%Aber wir haben viele Anfragen und praktisch jede Anfrage, die wir implementieren, erfordert, dass wir dieselbe Fehlercode-Behandlung (für API- und Serverfehler) schreiben, die den Code dupliziert.
Was wir wollen, ist, nur Methoden von Interesse zu überschreiben, und wenn keine Implementierung bereitgestellt wird, dann wird eine Standardimplementierung ausgeführt.
In etwa so:
%Vor% Der CustomCallback
wird sich um API- und Serverfehler kümmern, und wenn alles in Ordnung ist, dann gebe das Ergebnis nur an die aufrufende Aktivität weiter.
Beim Erstellen der RestAdapter
gibt es setRequestInterceptor();
, was mir erlaubt, die Anfrage vor der Ausgabe zu erfassen. Ich dachte an etwas Ähnliches, wie setResponseInterceptor()
, das mir erlauben wird, die Antwort abzufangen, bevor ich sie an die Aktivität und behandeln dort generische Fehler, fand aber nichts ähnliches.
Ihr benutzerdefinierter Rückruf kann die Antwort in der Basisklasse zuerst verarbeiten und dann an eine abstrakte Methode delegieren.
%Vor%Sie können die Nachrüstanforderungen mit einem Ereignisbus kombinieren und haben einen sauberen und zentralen Punkt für die Bearbeitung Ihrer Antworten.
Alles was Sie tun müssen, ist ein zusammengesetztes Objekt wie dieses zu definieren:
%Vor%Dieses Objekt definiert Request, Callback und Event und dieses Objekt wird der Nachrüstanforderung zugeführt.
%Vor%Danach sieht Ihre Hauptklasse so aus:
%Vor%Eine ausführlichere Erklärung finden Sie in diesem Blogbeitrag: Otto + Retrofit - Eine elegante Lösung für Web-Anfragen und Sie finden hier ein funktionierendes Beispiel hier