Отправить массив с HTTP Get - PullRequest
81 голосов
/ 17 июня 2010

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

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

Ответы [ 2 ]

172 голосов
/ 22 декабря 2012

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

Вы должны написать запрос, добавив "[]" в foo какэто:

foo[]=val1&foo[]=val2&foo[]=val3
138 голосов
/ 17 июня 2010

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

Хотя нет определенного стандарта, большинство веб-платформ позволяют связывать несколько значений с одним полем (например, 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...