¿Cómo puedo enviar una matriz con una solicitud HTTP Get?
Estoy usando el cliente GWT para enviar la solicitud.
Respuestas:
Eso depende de lo que acepte el servidor de destino. No existe un estándar definitivo para esto. Véase también ao Wikipedia: Cadena de consulta :
Si bien no existe un estándar definitivo, la mayoría de los marcos web permiten que se asocien múltiples valores con un solo campo (p
field1=value1&field1=value2&field2=value3
. Ej .). [4] [5]
Generalmente, cuando el servidor de destino usa un lenguaje de programación de tipo fuerte como Java ( Servlet ), entonces puede enviarlos 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 va a trabajar en él, sino que va a devolver sólo el primer valor.
String foo = request.getParameter("foo"); // value1
Y, cuando el servidor de destino utiliza un lenguaje de tipado débil como PHP o RoR, entonces debe agregar el sufijo al nombre del parámetro con llaves []
para que el lenguaje devuelva una matriz de valores en lugar de un solo valor.
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
En caso de que aún lo use foo=value1&foo=value2&foo=value3
, 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 de Java, aún puede obtenerlos, pero deberá usar el nombre exacto del parámetro, incluidas las llaves.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Sé que esta publicación es muy antigua, pero tengo que responder porque aunque la respuesta de BalusC está marcada como correcta, no es completamente correcta.
Tienes que escribir la consulta agregando "[]" a foo así:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
dentro de un<form>
contenedor sabe exactamente cómo enviar de forma predeterminada en todos los navegadores. las entradas se convertirán en `user [name] = SOMETEXT & user [email] =SOME@TEXT.com --- es la aplicación host que se requiere para manejar la decodificación de nuevo en una matriz