È passato all'aggiornamento a Retrofit 2.0 e si è imbattuto in questo strano problema.Retrofit 2.0-beta-2 aggiunge le virgolette letterali ai valori MultiPart
Ho un metodo per accedere un utente in
public interface ApiInterface {
@Multipart
@POST("user/login/")
Call<SessionToken> userLogin(@Part("username") String username, @Part("password") String password);
}
Quando guardo la chiave params valore post sul lato server stampano come questo
username : "brian"
password : "password"
Lo stesso metodo che utilizza retrofit 1.9 i K: coppie V sembrano
username : brian
password : password
E 'l'aggiunta di citazioni letterali alle variabili POST
Se utilizzo qualsiasi altro client di riposo, le variabili vengono stampate come la seconda modalità senza le virgolette.
Ecco come costruisco l'istanza Retrofit con un intercettore
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();
immagino che sto facendo qualcosa di sbagliato con il convertitore, ma non è sicuro che cosa.
Qualcun altro ha già riscontrato questo problema? So che è in beta, ma è ampiamente usato.
Esattamente lo stesso qui. Ho appena terminato un massiccio aggiornamento di 2 giorni con Retrofit 2.0, la maggior parte delle cose funziona perfettamente, ma sto impazzendo con queste citazioni aggiuntive aggiunte alle stringhe. Usando un metodo API "Retrofit" '' '@ Multipart''', la stringa è un elemento' '' @ Part'''. Il server riceve la stringa "test" come "" test "". UGH !!! –
@MatthewHousser Non ho ancora trovato una soluzione reale, dal momento che ho il controllo sul backend e ho impostato un'intestazione speciale nell'app client, quindi se questa intestazione esiste eseguo un metodo che rimuove le virgolette dai parametri GET e POST , è super hacky ma almeno le richieste funzionano per ora. Penso che aprirò un problema sul repository github – Brian
per favore pubblica il tuo problema qui dopo averlo creato, grazie! –