Как я могу отправить массив с запросом HTTP Get?
Я использую клиента GWT для отправки запроса.
Как я могу отправить массив с запросом HTTP Get?
Я использую клиента GWT для отправки запроса.
Это зависит от того, что принимает целевой сервер. Для этого нет окончательного стандарта. См. Также 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]
Я знаю, что это сообщение действительно старое, но я должен ответить, потому что хотя ответ BalusC отмечен как правильный, он не совсем корректен.
Вам нужно написать запрос, добавив "[]", чтобы сделать это следующим образом:
foo[]=val1&foo[]=val2&foo[]=val3