如何在改造中使用ArrayList作为Query参数

时间:2018-03-10 00:50:55

标签: retrofit retrofit2

我正在尝试做这样的事情:

@GET("values")
Call<List<Values>> getResult(@Query("ids") List<String> ids);

我想要的请求是这样的:

server.com/values?ids=abc%2Cdef%2Cghi%2Cjkl

实际要求如下:

server.com/values?ids=abc&ids=def&ids=ghi&ids=jkl

如何达到预期的要求?

1 个答案:

答案 0 :(得分:0)

最后,想出了这个。这是我采取行动的方法:

首先,将ArrayList转换为编码字符串:

String uriString = null;
try {
       uriString = URLEncoder.encode(TextUtils.join(",", ids), "utf-8");
} catch (UnsupportedEncodingException e) {
       // Catch the exception
}

然后在进行改装调用时执行以下操作:

@GET("values")
Call<List<Values>> getResult(@Query(encode=true, value="ids") String ids);

设置encode = true非常重要,否则您的%将被进一步编码,您将永远无法进行所需的呼叫。