Java 使用HTTP Get发送一个数组

Java 使用HTTP Get发送一个数组,java,http,gwt,arrays,Java,Http,Gwt,Arrays,如何发送带有HTTP Get请求的数组 我正在使用GWT客户端发送请求。这取决于目标服务器接受什么。这方面没有明确的标准。另见a.o.: 虽然没有明确的标准,但大多数web框架允许多个值与单个字段关联(例如field1=value1&field1=value2&field2=value3) 通常,当目标服务器使用Java()之类的strong类型的编程语言时,您可以将它们作为同名的多个参数发送。API通常提供一种专用方法,以获取多个参数值作为一个数组 foo=value1&foo=val

如何发送带有HTTP Get请求的数组


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

这取决于目标服务器接受什么。这方面没有明确的标准。另见a.o.:

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

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

foo=value1&foo=value2&foo=value3
request.getParameter(“foo”)
也可以处理它,但它只返回第一个值

String foo = request.getParameter("foo"); // value1
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
而且,当目标服务器使用弱类型的语言(如PHP或RoR)时,您需要在参数名称后面加上大括号
[]
),以便触发该语言返回一个值数组而不是单个值

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

String foo = request.getParameter("foo"); // value1
$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]

这取决于目标服务器接受什么。这方面没有明确的标准。另见a.o.:

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

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

foo=value1&foo=value2&foo=value3
request.getParameter(“foo”)
也可以处理它,但它只返回第一个值

String foo = request.getParameter("foo"); // value1
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
而且,当目标服务器使用弱类型的语言(如PHP或RoR)时,您需要在参数名称后面加上大括号
[]
),以便触发该语言返回一个值数组而不是单个值

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

String foo = request.getParameter("foo"); // value1
$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]

我知道这篇帖子很老了,但我必须回复,因为尽管巴卢斯克的答案被标记为正确,但它并不是完全正确的

您必须这样编写将“[]”添加到foo的查询:

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

我知道这篇帖子很老了,但我必须回复,因为尽管巴卢斯克的答案被标记为正确,但它并不是完全正确的

您必须这样编写将“[]”添加到foo的查询:

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

很高兴你回复了这个老帖子!这肯定有帮助。@BalusC不正确,它在C/C++/C#中工作得非常好(并且可以在java中工作)。只有您使用Java才会导致相同的名称被解释为相同的名称。您的答案是URI格式的使用不正确however@GaretClaborn我不知道你想说什么,但这个答案对梅格拉德有效,你回复了这个老帖子!这肯定有帮助。@BalusC不正确,它在C/C++/C#中工作得非常好(并且可以在java中工作)。只有您使用Java才会导致相同的名称被解释为相同的名称。您的答案是URI格式的使用不正确however@GaretClaborn不确定您想说什么,但这个答案对我有效当服务器使用nodeJs时,您可以简单地将数组作为foo=[value1,value2,value3]传递。当您使用req.query获得此内部快速路由时,您将得到{foo:'[value1,value2,value3]}。你只需要解析它&在你的代码中使用这个数组什么废话,语言类型与它无关这确实是未指定的。这正是答案说“一般”的原因。在强类型语言中,请求参数名称中的括号后缀
[]
的解释方式与弱类型语言中的解释方式不同。它最初是作为弱类型语言的内部解决方案引入的,以便能够创建预期的变量类型。PHP是第一个这样做的。这并不是泛化。括号是将嵌套结构编码为其他平坦序列的工具。Zope(Python框架)使用了。这些方案大多已被AJAX和JSON淘汰。老实说,将其推广到类型系统的想法是非常牵强的。换句话说,问题在于查询字符串不包含类型信息,而不是解析查询字符串的语言是弱类型的。PHP和Ruby不需要额外的括号来接受相同名称的多个值。当服务器使用nodeJs时,您只需将数组作为foo=[value1,value2,value3]传递。当您使用req.query获得此内部快速路由时,您将得到{foo:'[value1,value2,value3]}。你只需要解析它&在你的代码中使用这个数组什么废话,语言类型与它无关这确实是未指定的。这正是答案说“一般”的原因。在强类型语言中,请求参数名称中的括号后缀
[]
的解释方式与弱类型语言中的解释方式不同。它最初是作为弱类型语言的内部解决方案引入的,以便能够创建预期的变量类型。PHP是第一个这样做的。这并不是泛化。括号是将嵌套结构编码为其他平坦序列的工具。Zope(Python框架)使用了。这些方案大多已被AJAX和JSON淘汰。将其推广到类型系统的想法非常遥远