在 Android Retrofit 中,如何为 GET 请求查询序列化列表?

In Android Retrofit, how do I serialize a List for a GET request query?

将列表序列化为查询参数的最简洁方法是什么?目前,我的连载变成:

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

我需要的是上面的,但是没有括号。我想 Gson 可能有办法做到这一点,但我不确定。

更新: 一件重要的事情是,这是一个需要发布的动态 List,而不仅仅是单个参数。

你可以在Retrofit的官方文档中看到这个例子 http://square.github.io/retrofit/

您必须使用注解 @Query 对方法的每个参数进行注解。

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

希望对您有所帮助。

您需要以这种方式在您的接口中定义您的方法:

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

你应该这样称呼它:

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);

对于动态列表,您可能会想要使用@QueryMap

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