Retrofit 如何在改型中使用ArrayList作为查询参数

Retrofit 如何在改型中使用ArrayList作为查询参数,retrofit,retrofit2,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 如何实现所需的请求?最后,我找到了答案。这就是我的方法:

我正在尝试这样做:

@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

如何实现所需的请求?

最后,我找到了答案。这就是我的方法:

首先,将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);
@GET(“值”)
调用getResult(@Query(encode=true,value=“ids”)字符串id);

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

我认为您可以作为预格式化字符串传递,或者根据