HTTP Alma isteği içeren bir Dizi nasıl gönderebilirim?
İsteği göndermek için GWT istemcisini kullanıyorum.
Yanıtlar:
Bu, hedef sunucunun neyi kabul ettiğine bağlıdır. Bunun için kesin bir standart yok. Ayrıca bkz. Wikipedia: Sorgu dizesi :
Kesin bir standart olmamakla birlikte, çoğu web çerçevesi birden çok değerin tek bir alanla ilişkilendirilmesine izin verir (örneğin
field1=value1&field1=value2&field2=value3
). [4] [5]
Genel olarak, hedef sunucu Java ( Servlet ) gibi güçlü yazılmış bir programlama dili kullandığında , bunları aynı ada sahip birden çok parametre olarak gönderebilirsiniz. API, genellikle bir dizi olarak birden çok parametre değeri elde etmek için özel bir yöntem sunar.
foo=value1&foo=value2&foo=value3
String[] foo = request.getParameterValues("foo"); // [value1, value2, value3]
request.getParameter("foo")
Ayrıca bunun üzerinde çalışacak, ancak yalnızca ilk değer dönersiniz.
String foo = request.getParameter("foo"); // value1
Ayrıca, hedef sunucu PHP veya RoR gibi zayıf yazılmış bir dil kullandığında []
, dili tek bir değer yerine bir değer dizisi döndürmeye tetiklemek için parametre adının sonuna küme ayraçları eklemeniz gerekir .
foo[]=value1&foo[]=value2&foo[]=value3
$foo = $_GET["foo"]; // [value1, value2, value3]
echo is_array($foo); // true
Hala kullanıyorsanız foo=value1&foo=value2&foo=value3
, o zaman yalnızca ilk değeri döndürür.
$foo = $_GET["foo"]; // value1
echo is_array($foo); // false
foo[]=value1&foo[]=value2&foo[]=value3
Bir Java Servlet'e gönderdiğinizde , onları yine de edinebileceğinizi, ancak parantezler dahil tam parametre adını kullanmanız gerektiğini unutmayın.
String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]
[]
istek parametresi adlarındaki köşeli ayraç son ekleri , zayıf yazılan dillerdeki gibi yorumlanmaz. Başlangıçta, amaçlanan değişken türünü oluşturabilmek için zayıf yazılmış diller için dahili bir çalışma olarak tanıtıldı. Bunu yapan ilk kişi PHP oldu.
Bu gönderinin gerçekten eski olduğunu biliyorum, ancak yanıtlamam gerekiyor çünkü BalusC'nin yanıtı doğru olarak işaretlenmiş olsa da, tamamen doğru değil.
Şunun gibi "[]" ekleyerek sorgu yazmalısınız:
foo[]=val1&foo[]=val2&foo[]=val3
<input name="user[name]" /> <input name="user[email]" />
bir<form>
kapsayıcının içi, tüm tarayıcılarda varsayılan olarak nasıl gönderileceğini tam olarak bilir. girişler `kullanıcı [ad] = SOMETEXT & kullanıcı [e-posta] =SOME@TEXT.com olacak - bu, bir diziye kod çözmeyi işlemek için gerekli olan ana bilgisayar uygulamasıdır