Enviar una matriz con un HTTP Get


¿Cómo puedo enviar una matriz con una solicitud HTTP Get?

Estoy usando el cliente GWT para enviar la solicitud.

Author: BalusC, 2010-06-17

2 answers

Eso depende de lo que acepte el servidor de destino. No hay un estándar definitivo para esto. Véase también a. o. Wikipedia: Query string :

Si bien no hay un estándar definitivo, la mayoría de los marcos web permiten que se asocien múltiples valores con un solo campo (por ejemplo, field1=value1&field1=value2&field2=value3).[4][5]

Generalmente, cuando el servidor de destino utiliza un lenguaje de programación de tipo fuerte como Java (Servlet ), entonces puede simplemente envíelos como múltiples parámetros con el mismo nombre. La API generalmente ofrece un método dedicado para obtener múltiples valores de parámetros como una matriz.

foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]

El request.getParameter("foo") también funcionará en él, pero devolverá solo el primer valor.

String foo = request.getParameter("foo"); // value1

Y, cuando el servidor de destino utiliza un lenguaje de tipo débil como PHP o RoR, entonces necesita sufijar el nombre del parámetro con llaves [] para activar el lenguaje para devolver una matriz de valores en lugar de una sola valor.

foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true

En caso de que todavía utilice foo=value1&foo=value2&foo=value3, entonces devolverá solo el primer valor.

$foo = $_GET["foo"]; // value1
echo is_array($foo); // false

Tenga en cuenta que cuando envía foo[]=value1&foo[]=value2&foo[]=value3 a un Servlet Java, aún puede obtenerlos, pero necesitará usar el nombre exacto del parámetro, incluidas las llaves.

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
 117
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:29

Sé que este post es muy antiguo, pero tengo que responder porque aunque la respuesta de BalusC está marcada como correcta, no es completamente correcta.

Tienes que escribir la consulta añadiendo "[] " a foo así:

foo[]=val1&foo[]=val2&foo[]=val3
 158
Author: David Roman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-30 22:37:15