用逗号分隔的params改造URI

时间:2016-10-18 02:18:46

标签: android retrofit2

我正在使用retrofit:2.1.0,我正在尝试构建一个GET(从未见过)URI,如下所示:

https://api.endpoint.net/v1/getValues?userID=456&imgID=37&infoToken=values:imgSize=200,imgTypeDefault=true&cropped=false

在上面的URI中,我在infoToken=values:imgSize=200,imgTypeDefault=true中使用逗号分隔的查询参数,而动态填充imgSizeimgTypeDefault是静态的,并且: userIDimgID也会动态填充。

@GET("/v1/getValues?infoToken=values:imgSize=,imgTypeDefault=true&cropped=false Call<Images> getImageListWithSize(@Query("userID") String userID, @Query("imgID") int imgID, @Query(value = "imgSize", encoded = true) int size);

注意:由于我不确定如何将值传递给URI中的逗号分隔参数,因此我将infoToken=values:imgSize=设置为显示不正确

我提交了请求:

Call<Images> call = apiEndpointI.getImageListWithSize(currUser.getUserID, currUser.getImgID(), currUser.getImgSize());

以下是从日志触发的请求URI:

https://api.endpoint.net/v1/getValues?userID=XXX&imgID=37&infoToken=values:imgSize=,imgTypeDefault=true&cropped=false&imgSize=200

从上述请求中可以看出,当使用@Query时,即使我设置&,它也会以encoded = true为前缀。相反,我希望为infoToken=values:imgSize=分配值imgSize我在请求中传递。

1 个答案:

答案 0 :(得分:0)

解决了它。所以,现在我的GET看起来像这样:

@GET("/v1/getValues?cropped=false Call<Images> getImageListWithSize(@Query("userID") String userID, @Query("imgID") int imgID, @Query("infoToken") String infoToken);

我将infoToken声明为:

int size = getSize(); //200 for example String infoToken = "values:imgSize=" + size + ",imgTypeDefault=true";

并且我提交了所有请求:

Call<Images> call = apiEndpointI.getImageListWithSize(currUser.getUserID, currUser.getImgID(), infoToken);