Uso Retrofit per il mio livello di rete nella mia app per Android, ma ho un problema con la codifica dell'URL.Perché Retrofit non può codificare correttamente la stringa di query con parentesi quadre?
devo chiamare un'API REST del genere:
https://my_hostname.com/some_path?q=some_query¶m[0]=value1¶m[1]=value2&other_param=abcd
come si può vedere la stringa di query è composta da alcuni diversi tipi di parametri, così ho deciso di usare il @QueryMap
annotazioni nell'interfaccia Retrofit con a Map<String, String>
dove q, param[1], param[0], other_param
sono chiavi stringa della mappa
Cosa mi aspetto? Mi aspetto che le parentesi quadre nell'URL siano codificate con per '['
e %5D
per '['
, ma ciò non accade.
Perché succede? Le parentesi quadre dovrebbero essere codificate con la codifica percentuale. È un bug o sto facendo qualcosa di sbagliato? Ho anche provato l'annotazione @EncodedQueryMap
senza differenze.
che assomiglia il tuo api resto dovrebbe essere in attesa 'params' di essere un array di valori – njzk2
penso che il server riposo non dovrebbe usare' [] ' in nomi di variabili, ma piuttosto usarlo come ovunque, come indicatore di lista, nel qual caso non è necessario che le parentesi siano codificate. – njzk2
Senza codificare la parentesi l'API del server non funziona correttamente. Ho bisogno di codificare le parentesi, ma mi piacerebbe sapere come farlo con il retrofit e non manualmente. – Noodles