我正在使用apache URIBuilder 为Rest服务的 GET方法构建查询字符串。
=SUMPRODUCT((COUNTIFS($A$2:$A$5,$A$2:$A$5,C2:C5,"")+($B$2:$B$5="Actual")>0)*1,C2:C5)
这是输入对象:
@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));
但它只是简单地发送了名字&#34; codici []&#34;并且第一个参数被覆盖。 然后我尝试了逗号分隔值:
URIBuilder builder = new URIBuilder()
.setHost("localhost")
.setPort(8080)
.setScheme("http")
.setPath("/remote")
.setParameter("codici[]", codicilist.get(0))
.setParameter("codici[]", codicilist.get(1));
但如果失败......我怎样才能设置一个参数列表?
答案 0 :(得分:2)
在您的示例中,只需使用addParameter
代替setParameter
。如果参数已存在,setParameter
将覆盖您的参数。 addParameter
将添加一个新的(忽略现有的)。
答案 1 :(得分:1)
您可以使用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