动态地将没有值的查询参数添加到Retrofit请求

时间:2014-09-29 21:19:43

标签: url retrofit square-bracket

我已请求设置为用户启用的服务列表。

请求格式如下:

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

服务参数列表("服务[10]& service [1000]& service [10000]")是动态创建的,每个参数都没有价值。是否有可能使用Retrofit来实现这一目标?

3 个答案:

答案 0 :(得分:23)

来自retrofit documentation

  

对于复杂的查询参数组合,可以使用Map

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

我想这会成为你想要达到的目标。

答案 1 :(得分:5)

我找到了解决方法,如何做到这一点。

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

然后:

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

答案 2 :(得分:0)

我们可以使用@QueryMap 进行传递,如下所示:

GET("/movies")
Call<List<Movies>> getMovies(
    @QueryMap Map<String, String> options
);

构建参数:

Map<String, String> data = new HashMap<>();
data.put("director", "Haresh");
data.put("page", String.valueOf(2));

它将生成如下网址:

http://your.api.url/movies?page=2&director=Haresh