Отправить массив с HTTP Get

Как я могу отправить массив с запросом HTTP Get?

Я использую клиента GWT для отправки запроса.

Ответ 1

Это зависит от того, что принимает целевой сервер. Для этого нет окончательного стандарта. См. Также a.o. Википедия: строка запроса:

В то время как нет окончательного стандарта, большинство веб-фреймворков позволяют связать несколько значений с одним полем (например, 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]

Ответ 2

Я знаю, что это сообщение действительно старое, но я должен ответить, потому что хотя ответ BalusC отмечен как правильный, он не совсем корректен.

Вам нужно написать запрос, добавив "[]", чтобы сделать это следующим образом:

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