Comment puis-je envoyer un tableau avec une requête HTTP Get?
J'utilise le client GWT pour envoyer la demande.
Réponses:
Cela dépend de ce que le serveur cible accepte. Il n'y a pas de norme définitive pour cela. Voir aussi ao Wikipedia: Chaîne de requête :
Bien qu'il n'y ait pas de norme définitive, la plupart des frameworks Web permettent d'associer plusieurs valeurs à un seul champ (par exemple
field1=value1&field1=value2&field2=value3
). [4] [5]
En règle générale, lorsque le serveur cible utilise un langage de programmation fortement typé tel que Java ( Servlet ), vous pouvez simplement les envoyer en tant que paramètres multiples avec le même nom. L'API propose généralement une méthode dédiée pour obtenir plusieurs valeurs de paramètres sous forme de tableau.
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
Le request.getParameter("foo")
fonctionnera également dessus, mais il ne retournera que la première valeur.
String foo = request.getParameter("foo"); // value1
Et, lorsque le serveur cible utilise un langage typé faible comme PHP ou RoR, vous devez alors suffixer le nom du paramètre avec des accolades []
afin de déclencher le langage pour renvoyer un tableau de valeurs au lieu d'une valeur unique.
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Au cas où vous l'utilisez encore foo=value1&foo=value2&foo=value3
, il ne renverra que la première valeur.
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
Notez que lorsque vous envoyez foo[]=value1&foo[]=value2&foo[]=value3
à un servlet Java, vous pouvez toujours les obtenir, mais vous devez utiliser le nom exact du paramètre, y compris les accolades.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Je sais que ce post est vraiment vieux, mais je dois répondre car bien que la réponse de BalusC soit marquée comme correcte, elle n'est pas complètement correcte.
Vous devez écrire la requête en ajoutant "[]" à toto comme ceci:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
à l'intérieur d'un<form>
conteneur sait exactement comment soumettre par défaut dans tous les navigateurs. les entrées deviendront `user [name] = SOMETEXT & user [email] =SOME@TEXT.com --- c'est l'application hôte qui est nécessaire pour gérer le décodage dans un tableau