Як я можу надіслати масив із запитом HTTP Get?
Я використовую клієнт GWT для надсилання запиту.
Відповіді:
Це залежить від того, що приймає цільовий сервер. Для цього не існує остаточного стандарту. Дивіться також ao Wikipedia: Рядок запиту :
Хоча остаточного стандарту не існує, більшість веб-фреймворків дозволяють асоціювати кілька значень з одним полем (наприклад
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, ви все одно можете їх отримати, але вам потрібно буде використовувати точну назву параметра, включаючи фігурні дужки.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
Я знаю, що ця публікація справді стара, але я повинен відповісти, бо хоча відповідь BalusC позначена як правильна, вона не є повністю правильною.
Ви повинні написати запит, додавши "[]" до foo так:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
всередині<form>
контейнера точно знає, як подати за замовчуванням у всіх браузерах. вхідні дані стануть `user [name] = SOMETEXT & user [email] =SOME@TEXT.com --- це хост-програма, яка повинна обробляти декодування назад у масив