2016-02-26 3 views
0

Quelle est la manière la plus propre de sérialiser une liste à un paramètre de requête? Actuellement, ma sérialisation devient:Dans Android Retrofit, comment sérialiser une liste pour une requête GET?

...search?items[]=this&items[]=cat&items[]=cookie... 

Ce dont j'ai besoin est ce qui précède, mais sans les parenthèses. J'ai pensé que Gson pourrait avoir un moyen de le faire, mais je ne suis pas sûr.

MISE À JOUR: Une chose importante est que c'est un List dynamique qui doit être affiché, et pas seulement params individuels.

Répondre

0

Pour une liste dynamique, vous voudrez probablement utiliser @QueryMap

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

Vous pouvez voir cet exemple qui est sur la documentation officielle de Rénovation http://square.github.io/retrofit/

Vous devez annotée chaque paramètre de votre méthode avec le @Query d'annotation.

@GET("group/{id}/users") 
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort); 

enter image description here

J'espère que cela vous aide.

0

Vous devez définir votre méthode dans votre interface de cette façon:

@GET("query") 
myMethod(@Query("items") String items) 

Et ceci est la façon dont vous devriez l'appeler:

ArrayList<String> list = new ArrayList<String>(); 
list.add("Item 1"); 
list.add("Item 2"); 
list.add("Item 3"); 
String items = ""; 
for (String s : list){ 
    items += s + ","; 
} 

api.query(items);