1

我需要在 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]不为空。这可能吗?有什么解决方法吗?

提前致谢!

4

2 回答 2

0

在常规 html 中,您需要像这样发送它:

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

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

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

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

我不知道这是否会导致您面临 NullPointerException。但即使我不建议你改变你的实现来为每个字段保留一个值(键,值)

于 2013-01-30T11:04:59.320 回答
0

好的,这似乎是 play-framework 中的一个错误,但在 2.1 版本中解决了。

https://play.lighthouseapp.com/projects/82401/tickets/360-bug-in-wsjava-setqueryparameter-leads-to-npe-when-adding-a-query-parameter-twice

于 2013-02-04T20:41:22.567 回答