Ging auf Upgrade auf Retrofit 2.0 und läuft in dieses seltsame Problem.Retrofit 2.0-beta-2 fügt literalen Anführungszeichen zu MultiPart-Werten hinzu
habe ich eine Methode einen Benutzer in
public interface ApiInterface {
@Multipart
@POST("user/login/")
Call<SessionToken> userLogin(@Part("username") String username, @Part("password") String password);
}
Wenn ich an dem Schlüsselwert POST params auf der Server-Seite schauen, um ProtDruck sie wie diese
username : "brian"
password : "password"
mit der gleichen Methode Retrofit 1.9 die K: V-Paare sehen aus wie
username : brian
password : password
Es wörtliche Zitate zu den POST-Variablen Hinzufügen
Wenn ich einen anderen Restclient verwende, werden die Variablen wie die zweite Möglichkeit ohne die Anführungszeichen gedruckt.
Hier ist, wie ich die Retrofit-Instanz mit einem Interceptor bauen
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
// Customize the request
Request request = original.newBuilder()
.header("Accept", "application/json")
.header("Authorization", myPrefs.accessToken().getOr(""))
.method(original.method(), original.body())
.build();
Response response = chain.proceed(request);
// Customize or return the response
return response;
}
});
Ok2Curl.set(client);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(apiEndpoint)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
Ich stelle mir vor, ich bin etwas falsch mit dem Konverter zu tun, aber nicht sicher, was.
Ist noch jemand in dieses Problem geraten? Ich weiß es in der Beta, aber es ist ziemlich widly verwendet.
Exakt gleich hier. Ich habe gerade ein 2-Tage-Upgrade von Retrofit 2.0 abgeschlossen, die meisten Dinge funktionieren perfekt, aber ich bin verrückt nach diesen zusätzlichen Anführungszeichen, die den Strings hinzugefügt wurden. Mit einer '' @ @ Multipart''' Retrofit API-Methode ist string ein '' '@ Part''-Element. Der Server erhält die Zeichenfolge "test" als "" test "". PFUI!!! –
@MatthewHousser Ich habe noch keine echte Lösung gefunden, da ich nun auch die Kontrolle über das Backend habe, habe ich einen speziellen Header in der Client-App gesetzt, und wenn dieser Header existiert, führe ich eine Methode aus, die die Anführungszeichen von GET und POST entfernt , es ist super hacky, aber wenigstens funktionieren die Anfragen jetzt. Ich denke, ich werde ein Problem auf der Github Repo – Brian
öffnen Sie bitte Ihr Problem hier, nachdem Sie es erstellen, danke! –