So erhalten Sie eine rohe Antwort und eine Anfrage mit Retrofit 2.0

9

Ich versuche, die rohe Antwort mit Retrofit2.0.2 zu erhalten.

Bisher habe ich versucht, die Antwort mit der folgenden Codezeile zu drucken, aber es druckt die Adresse und nicht den genauen Antworttext.

Log.i ("RAW MESSAGE", response.body (). toString ());

compile 'com.squareup.retrofit2:retrofit:2.0.2'

%Vor%     
praveen kumar 07.05.2016, 13:11
quelle

4 Antworten

4

Das liegt daran, dass es von einem Konverter bereits in ein Objekt konvertiert wurde. Um den rohen JSON zu erhalten, benötigen Sie einen Interceptor auf Ihrem Http Client. Glücklicherweise müssen Sie nicht Ihre eigene Klasse schreiben, Square bietet bereits die HttpLoggingInterceptor-Klasse für Sie an.

Fügen Sie dies auf Ihrem App-Level-Gadget hinzu

%Vor%

Und benutze es in deinem OkHttpClient

%Vor%

Vergessen Sie nicht, Ihren HttpClient in Retrofit zu ändern.

%Vor%

In der Log-Katze sehen Sie die rohe JSON-Antwort. Weitere Informationen finden Sie auf Squares OkHttp github .

Vorsicht!

Vergessen Sie nicht, Interceptors (oder ändern Sie Logging Level auf NONE) in der Produktion zu entfernen! Anderenfalls können Nutzer Ihre Anfrage und Antwort auf Log Cat sehen.

    
aldok 03.12.2016 08:19
quelle
2

Sie müssen "ResponseBody" von okhttp3 in Ihrem Anruf verwenden. Rufen Sie dann "response.body (). String ()" ab, um das JSONObject zu erhalten, das Ihr Server Ihnen gibt. Es ist eine gute Möglichkeit, Fehler zu finden, wenn bei der Analyse der Serverantwort auf Ihr Modellobjekt Fehler auftreten.

    
oskarko 11.01.2017 16:17
quelle
1

Verwenden Sie einfach:

%Vor%

Oder:

%Vor%     
Kevin Robatel 09.05.2016 14:44
quelle
0

Wahrscheinlich möchten Sie den rohen Antworttextkörper zum Debuggen sehen. Es gibt zwei Möglichkeiten, dies zu tun.

  1. Verwendung von okhttp3.logging.HttpLoggingInterceptor als @aldok erwähnt.

  2. Wenn Sie einige Eigenschaften des Antwortobjekts überprüfen oder das json (response body) manuell in POJO umwandeln möchten, können Sie dies folgendermaßen tun:

Verwenden Sie die addConverterFactory nicht während der Initialisierung des Retrofit-Clients, sondern kommentieren Sie diese Zeile.

%Vor%

Dann konsumiere die Antwort so:

%Vor%

Hoffe, das würde helfen ~

    
yu zhao 05.08.2017 16:08
quelle

Tags und Links