在 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);
将列表序列化为查询参数的最简洁方法是什么?目前,我的连载变成:
...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);