Bagaimana saya bisa mengirim Array dengan permintaan HTTP Get?
Saya Menggunakan klien GWT untuk mengirim permintaan.
Jawaban:
Itu tergantung pada apa yang diterima server target. Tidak ada standar yang pasti untuk ini. Lihat juga ao Wikipedia: String kueri :
Meskipun tidak ada standar yang pasti, kebanyakan kerangka kerja web memungkinkan beberapa nilai dikaitkan dengan satu bidang (misalnya
field1=value1&field1=value2&field2=value3
). [4] [5]
Umumnya, ketika server target menggunakan bahasa pemrograman yang diketik kuat seperti Java ( Servlet ), maka Anda dapat mengirimkannya sebagai beberapa parameter dengan nama yang sama. API biasanya menawarkan metode khusus untuk mendapatkan beberapa nilai parameter sebagai larik.
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
Itu request.getParameter("foo")
juga akan bekerja padanya, tetapi itu hanya akan mengembalikan nilai pertama.
String foo = request.getParameter("foo"); // value1
Dan, jika server target menggunakan bahasa dengan tipe lemah seperti PHP atau RoR, Anda perlu mencadangkan nama parameter dengan tanda kurung []
untuk memicu bahasa mengembalikan larik nilai, bukan nilai tunggal.
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Jika Anda masih menggunakan foo=value1&foo=value2&foo=value3
, maka itu hanya akan mengembalikan nilai pertama.
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
Perhatikan bahwa ketika Anda mengirim foo[]=value1&foo[]=value2&foo[]=value3
ke Java Servlet, Anda masih bisa mendapatkannya, tetapi Anda harus menggunakan nama parameter yang tepat termasuk tanda kurung kurawal.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
[]
dalam nama parameter permintaan tidak diinterpretasikan dengan cara yang sama seperti dalam bahasa dengan tipe lemah. Ini pada awalnya diperkenalkan sebagai pekerjaan internal untuk bahasa yang diketik lemah agar dapat membuat tipe variabel yang dimaksudkan. PHP adalah yang pertama melakukannya.
Saya tahu posting ini benar-benar lama, tetapi saya harus membalas karena meskipun jawaban BalusC ditandai sebagai benar, itu tidak sepenuhnya benar.
Anda harus menulis kueri dengan menambahkan "[]" ke foo seperti ini:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
inside of a<form>
container tahu persis cara mengirimkan secara default di semua browser. input akan menjadi `user [name] = SOMETEXT & user [email] =SOME@TEXT.com --- itu adalah aplikasi host yang diperlukan untuk menangani decoding kembali ke dalam array