Fangen Sie die HTTP-Antwort in Retrofit ab, bevor Sie sie an die aufrufende Aktivität übergeben

8

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.

    
Andy Res 30.04.2014, 08:27
quelle

2 Antworten

10

Ihr benutzerdefinierter Rückruf kann die Antwort in der Basisklasse zuerst verarbeiten und dann an eine abstrakte Methode delegieren.

%Vor%     
Jake Wharton 30.04.2014, 15:21
quelle
2

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

    
Laranjeiro 04.07.2015 09:24
quelle

Tags und Links