我使用apache URIBuilder为Rest服务的GET方法构建查询字符串。
@RequestMapping(value="/remote")
public Return getTest(Ordine ordine) throws Exception{
...
}这是输入对象:
public class Ordine{
private List<String> codici;
//..get...set..
}我无法理解如何将此字符串列表设置为查询参数。
我试过两次设置param:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici", codicilist.get(0))
.setParameter("codici", codicilist.get(1));但第一个参数将从第二个部分覆盖。然后,我试图在param名称中添加[]:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici[]", codicilist.get(0))
.setParameter("codici[]", codicilist.get(1));但是它只是以"codici[]“的名字发送,并且第一个param被覆盖。然后我尝试了一个逗号分隔的值:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici", String.join(",",codicilist));但如果失败了..。我怎样才能设置一个param的列表?
发布于 2016-02-29 10:12:37
在您的示例中,只需使用addParameter而不是setParameter。如果参数已经存在,setParameter将重写它。addParameter将添加一个新的(忽略现有的)。
发布于 2016-02-29 09:51:33
您可以使用addParameters方法。
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote").addParameters(buildParamList())然后,使用帮助器方法获取所有codici参数值,该方法将构建一个NameValuePair对列表。
private List<NameValuePair> buildParamList() {
List<NameValuePair> output = new ArrayList<>();
for (String string : codici) {
output.add(new BasicNameValuePair("codici", string));
}
return output;
}因此,如果codici列表包含codici1、codici2、codici3,您将得到一个类似于codici1的输出
https://stackoverflow.com/questions/35695586
复制相似问题