代码之家  ›  专栏  ›  技术社区  ›  Matteo

使用HTTP GET发送数组

  •  74
  • Matteo  · 技术社区  · 16 年前

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

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

    2 回复  |  直到 10 年前
        1
  •  126
  •   Community Mohan Dere    9 年前

    这取决于目标服务器接受什么。对此没有明确的标准。也见A.O。 Wikipedia: Query string :

    虽然没有明确的标准,但大多数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]
    
        2
  •  168
  •   David Roman    11 年前

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

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

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