用HTTP获取发送数组
我怎样才能发送一个数组与HTTP获取请求?
我正在使用GWT客户端发送请求。
这取决于目标服务器接受的内容。 这没有确定的标准。 查看ao 维基百科:查询string :
虽然没有明确的标准,但大多数Web框架允许将多个值与单个字段相关联(例如,
field1=value1&field1=value2&field2=value3
)。 [4] [5]
通常,当目标服务器使用像Java( Servlet )这样的强types编程语言时,则可以将它们作为具有相同名称的多个参数来发送。 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这样的弱types语言时,为了触发语言返回一个值的数组而不是一个单一的值,你需要使用括号[]
来后缀参数名称。
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]
我知道这个post真的很老,但我不得不回复,因为虽然BalusC的答案被标记为正确,但并不完全正确。
你必须写这个查询,添加“[]”到这样的foo:
foo[]=val1&foo[]=val2&foo[]=val3