为了账号安全,请及时绑定邮箱和手机立即绑定

发送带有HTTP Get的数组

发送带有HTTP Get的数组

冉冉说 2019-10-18 10:40:52
如何发送带有HTTP Get请求的数组?我正在使用GWT客户端发送请求。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

这取决于目标服务器接受什么。没有确定的标准。另请参见Wikipedia:查询字符串:


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


通常,当目标服务器使用诸如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]


查看完整回答
反对 回复 2019-10-18
?
三国纷争

TA贡献1804条经验 获得超7个赞

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


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


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


查看完整回答
反对 回复 2019-10-18
  • 2 回答
  • 0 关注
  • 1366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信