HTTP Getリクエストで配列を送信するにはどうすればよいですか?
GWTクライアントを使用してリクエストを送信しています。
これは、ターゲットサーバーが何を受け入れるかに依存します。これに関する決定的な標準はありません。 a.oも参照してください。 Wikipedia:クエリ文字列 :
明確な標準はありませんが、ほとんどのWebフレームワークでは、複数の値を単一のフィールドに関連付けることができます(例:_
field1=value1&field1=value2&field2=value3
_)。[4][5]
一般に、ターゲットサーバーがJava( Servlet )などのstrong typedプログラミング言語を使用する場合、 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のようなweak typed言語を使用する場合、パラメーター名の末尾に中括弧_[]
_言語をトリガーして、単一の値ではなく値の配列を返すようにします。
_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