使用HTTP Get发送数组

Mat*_*teo 85 java arrays gwt http

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

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

Dav*_*man 174

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

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

foo[]=val1&foo[]=val2&foo[]=val3
Run Code Online (Sandbox Code Playgroud)

  • 这个答案只适用于弱类型语言(如PHP)的用户,因为`[]`实际上被用作内部解决方案,以便能够获得多值参数.我的答案已经更新,以澄清更多.所以你的陈述"它不完全正确"是无效的.最初的问题是关于Java,而不是关于PHP. (24认同)
  • 很高兴你回复了这篇老帖子!它肯定有所帮助. (5认同)

Bal*_*usC 140

这取决于目标服务器接受的内容.没有确定的标准.另见ao Wikipedia:查询字符串:

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

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

foo=value1&foo=value2&foo=value3
Run Code Online (Sandbox Code Playgroud)
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
Run Code Online (Sandbox Code Playgroud)

request.getParameter("foo")也将在它的工作,但它会只返回第一个值.

String foo = request.getParameter("foo"); // value1
Run Code Online (Sandbox Code Playgroud)

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

foo[]=value1&foo[]=value2&foo[]=value3
Run Code Online (Sandbox Code Playgroud)
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Run Code Online (Sandbox Code Playgroud)

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

$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
Run Code Online (Sandbox Code Playgroud)

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

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Run Code Online (Sandbox Code Playgroud)