将数组作为查询参数发送到其余WS(nullpointerException)

时间:2013-01-30 10:45:46

标签: rest playframework-2.0

我需要在playframework 2 中调用rest web服务,我需要发送一个查询参数,这是数组。在常规html中,我会发送它:

GET http://host.com?a=1&a=2&a=3

但当我尝试使用playframework 2 WS api时,我会做下一步:

Map<String,String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("a",new String[]{"value1","value2"});

WS.WSRequestHolder holder = WS.url("http://host.com");

Set<String> keys = paramMap.keySet();
for (int i = 0; i < paramMap.get(key).length; i++)
{
    holder.setQueryParameter(key, paramMap.get(key)[i]);
}

第一次 setQueryParamater()到来时,一切都很完美但第二次我得到 NullPointerException paramMap.get(key)[i ] 不为空。这可能吗?有什么解决方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

在常规html中,你需要来代表它:

GET http://host.com?a=1&a=2&a=3

使用ampershand(&amp;)分隔查询字符串中的参数而不是逗号(,)

编辑:抱歉忘记输入:就像你在循环中尝试做的那样,你不应该有同名的字段。你应该改为:

http://host.com?a1=value1&a2=value2

我不知道这是否会导致您遇到NullPointerException。但即使我不建议您更改您的实现以保持每个字段一个值(键,值)

答案 1 :(得分:0)