Wenn Ihr Server Json erwartet, versuchen Sie, das @Body-Argument zu einer Klasse zu machen.
– Kevin Crain
10. Februar 2015 um 7:26 Uhr
Nein, es wird kein Json-Objekt erwartet. Es fragt Parameter nur als Zeichenfolge ab.
– Dipen Patel
10. Februar 2015 um 7:29 Uhr
Retrofit serialisiert standardmäßig Ihre @Body-Klasse, sodass ich sicher bin, dass Ihr Server eine Zeichenfolge erhält
– Kevin Crain
10. Februar 2015 um 7:32 Uhr
Ich habe die Logcat-Ausgabe aktualisiert. Können Sie sich das bitte ansehen?
– Dipen Patel
10. Februar 2015 um 7:34 Uhr
Das ist ganz einfach, erstellen Sie eine LoginResponse-Klasse mit den vom Server erwarteten Feldern und verwenden Sie Callback anstelle von Callback, Retrofit versucht zu deserialisieren.
Retrofit verwendet standardmäßig Gson, um HTTP-Bodys in und aus JSON zu konvertieren. Wenn Sie ein Verhalten angeben möchten, das sich von den Standardeinstellungen von Gson unterscheidet (z. B. Benennungsrichtlinien, Datumsformate, benutzerdefinierte Typen), stellen Sie beim Erstellen eines RestAdapters eine neue Gson-Instanz mit Ihrem gewünschten Verhalten bereit. Weitere Einzelheiten zur Anpassung finden Sie in der Gson-Dokumentation.”
Das Problem war, dass ich verschiedene Versionen von okhttp und okhttp-urlconnection verwendet habe, also stellen Sie sicher, dass sie übereinstimmen.
Vielen Dank! Das hat mir das Leben gerettet, dachte, ich müsste auf Retrofit 2 upgraden. Ich bekam einen Fehler wie „retrofit.RetrofitError: No field METHODS“, und das hat es behoben.
– Schäferhundschaf
23. November 2016 um 16:12 Uhr
Ahmad Aghazadeh
Sie können die Klasse wie folgt verwenden:
public interface SafeUserApi {
@POST("/api/userlogin")
void getUserLogin(@Body PostData postData);
}
public class PostData{
String client_id;
String client_secret;
String username;
String password;
}
Vielen Dank! Das hat mir das Leben gerettet, dachte, ich müsste auf Retrofit 2 upgraden. Ich bekam einen Fehler wie „retrofit.RetrofitError: No field METHODS“, und das hat es behoben.
Wenn Ihr Server Json erwartet, versuchen Sie, das @Body-Argument zu einer Klasse zu machen.
– Kevin Crain
10. Februar 2015 um 7:26 Uhr
Nein, es wird kein Json-Objekt erwartet. Es fragt Parameter nur als Zeichenfolge ab.
– Dipen Patel
10. Februar 2015 um 7:29 Uhr
Retrofit serialisiert standardmäßig Ihre @Body-Klasse, sodass ich sicher bin, dass Ihr Server eine Zeichenfolge erhält
– Kevin Crain
10. Februar 2015 um 7:32 Uhr
Ich habe die Logcat-Ausgabe aktualisiert. Können Sie sich das bitte ansehen?
– Dipen Patel
10. Februar 2015 um 7:34 Uhr
Das ist ganz einfach, erstellen Sie eine LoginResponse-Klasse mit den vom Server erwarteten Feldern und verwenden Sie Callback anstelle von Callback, Retrofit versucht zu deserialisieren.
– Kevin Crain
10. Februar 2015 um 7:36 Uhr