HTTP Get के साथ एक Array भेजें


95

मैं एक HTTP प्राप्त अनुरोध के साथ एक ऐरे कैसे भेज सकता हूं?

मैं अनुरोध भेजने के लिए GWT क्लाइंट का उपयोग कर रहा हूं।


वास्तव में, HTML इसे रोशन करने में बेहतर है। <input name="user[name]" /> <input name="user[email]" />एक <form>कंटेनर के अंदर सभी ब्राउज़रों में डिफ़ॉल्ट रूप से सबमिट करने का तरीका जानता है। आदानों `उपयोगकर्ता [नाम] = SOMETEXT और उपयोगकर्ता [ईमेल] =SOME@TEXT.com बन जाएगा --- यह मेजबान अनुप्रयोग है जो एक सरणी में वापस डिकोडिंग को संभालने के लिए आवश्यक है
Garet Claborn

जवाबों:


153

यह इस बात पर निर्भर करता है कि लक्ष्य सर्वर क्या स्वीकार करता है। इसके लिए कोई निश्चित मानक नहीं है। एओ विकिपीडिया: क्वेरी स्ट्रिंग भी देखें :

हालांकि कोई निश्चित मानक नहीं है, अधिकांश वेब फ्रेमवर्क एक ही क्षेत्र (जैसे field1=value1&field1=value2&field2=value3) के साथ कई मूल्यों को संबद्ध करने की अनुमति देते हैं । [४] [५]

आमतौर पर, जब लक्ष्य सर्वर जावा ( सर्वलेट ) की तरह एक मजबूत टाइपिंग प्रोग्रामिंग भाषा का उपयोग करता है , तो आप उन्हें एक ही नाम के साथ कई मापदंडों के रूप में भेज सकते हैं। एपीआई आमतौर पर एक सरणी के रूप में कई पैरामीटर मान प्राप्त करने के लिए एक समर्पित विधि प्रदान करता है।

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जावा सर्वलेट भेजते हैं , तब आप उन्हें प्राप्त कर सकते हैं, लेकिन आपको ब्रेसिज़ सहित सटीक पैरामीटर नाम का उपयोग करना होगा।

String[] foo = request.getParameterValues("foo[]"); // [value1, value2, value3]

जब सर्वर नोडज का उपयोग करता है, तो आप बस सरणी को foo = [value1, value2, value3] के रूप में पास कर सकते हैं। जब आप इसे req.query के साथ एक्सप्रेस के अंदर प्राप्त करते हैं, तो आपको {foo: '[value1, value2, value3]'} मिल जाएगा। आपको बस इसे पार्स करने और अपने कोड में इस सरणी का उपयोग करने की आवश्यकता है
अक्षय बारपुते

184

मुझे पता है कि यह पोस्ट वास्तव में पुरानी है, लेकिन मुझे उत्तर देना होगा क्योंकि यद्यपि बालुसक का उत्तर सही के रूप में चिह्नित है, यह पूरी तरह से सही नहीं है।

आपको इस तरह से लुभाने के लिए "[]" जोड़कर प्रश्न लिखना होगा:

foo[]=val1&foo[]=val2&foo[]=val3

5
खुशी है कि आपने इस पुराने पोस्ट का जवाब दिया! यह निश्चित रूप से मदद करता है।
था लीनग

@BalusC गलत है, यह C / C ++ / C # में पूरी तरह से ठीक है (और जावा में काम कर सकता है)। यह केवल जावा का आपका उपयोग है जो समान नामों को इस तरह व्याख्या करने का कारण बनता है। आपका उत्तर यूआरआई फॉर्मेटिंग का गलत उपयोग है हालांकि
गेरेट क्लैबोर्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.