使用HTTP Get发送数组

时间:2010-06-17 11:37:41

标签: java http gwt arrays

如何使用HTTP Get请求发送数组?

我正在使用GWT客户端发送请求。

2 个答案:

答案 0 :(得分:171)

我知道这篇文章真的很老了,但我必须回复,因为尽管BalusC的答案被标记为正确,但它并不完全正确。

您必须编写查询,将“[]”添加到foo,如下所示:

foo[]=val1&foo[]=val2&foo[]=val3

答案 1 :(得分:134)

这取决于目标服务器接受的内容。没有确定的标准。另见a.o. Wikipedia: Query string

  

虽然没有明确的标准,但大多数网络框架允许多个值与单个字段相关联(例如field1=value1&field1=value2&field2=value3)。 [4] [5] < / p>

通常,当目标服务器使用强类型编程语言(如Java(Servlet))时,您只需将它们作为具有相同名称的多个参数发送即可。 API通常提供一种专用方法来获取多个参数值作为数组。

foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]

request.getParameter("foo")也会对它起作用,但它只会返回第一个值。

String foo = request.getParameter("foo"); // value1

并且,当目标服务器使用像PHP或RoR这样的弱类型语言时,您需要使用大括号[]为参数名后缀,以便触发语言返回值数组而不是单个值。

foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true

如果你仍然使用foo=value1&foo=value2&foo=value3,那么它只会返回第一个值。

$foo = $_GET["foo"]; // value1
echo is_array($foo); // false

请注意,当您将foo[]=value1&foo[]=value2&foo[]=value3发送到Java Servlet时,您仍然可以获取它们,但是您需要使用包含大括号的确切参数名称。

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]