2014-09-29 12 views
6

Ho richiesto di impostare l'elenco di servizi attivati ​​per l'utente.Aggiungere dinamicamente parametri di query senza valore alla richiesta di aggiornamento

Richiesta ha seguente formato:

https://myserver.com/setservices?param1=val1&param2=val2&service[10]&service[1000]&service[10000]

Elenco dei parametri di servizio ("servizio [10] & servizio [1000] & servizio [10000]") è stato creato in modo dinamico e ogni parametro non avere valore. È possibile ottenere questo utilizzando Retrofit?

risposta

15

Dal retrofit documentation:

Per parametro di query complesse Aggregazioni un Map può essere utilizzato.

@GET("/group/{id}/users") 
List<User> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options); 

Credo che questo farà ciò che si vuole raggiungere.

+0

@QueryMap non permette di includere i parametri di ricerca, senza valore. Dalla documentazione: "I valori sono codificati URL e null non includerà il parametro di ricerca nell'URL" –

+1

Che dire delle stringhe vuote? – WojciechKo

+0

Produce l'URL con i simboli di uguaglianza: https://myserver.com/setservices?service[100]=&service[10000]=&service[10]= Ma il server lo comprende bene. –

5

Ho trovato un modo per risolvere questo problema.

@GET("/setservices{services_query}") 
ServicesSetResponse setServices(@EncodedPath("services_query") String servicesQuery); 

E poi:

getService().setServices("?param1=val1&param2=val2" + "&services[10]&services[100000]&services[1000000]") 
Problemi correlati