2010-10-15 22 views
7

मेरे पास एक .NET एप्लिकेशन है जिसमें एक वेबआरक्वेट है जो एक पोस्ट के लिए एक ही कुंजी को कई बार जोड़ता है, इस प्रकार इसे PHP, जावा की आंखों में एक सरणी बना देता है Servlets आदि। मैं WebClient का उपयोग करने के लिए इसे फिर से लिखना चाहता था, लेकिन यदि मैं वेब क्लाइंट की क्वेरीरींगिंग को जोड़ता हूं।() एक ही कुंजी के साथ कई बार जोड़ें, यह केवल नए मान जोड़ता है, जो मूल्यों की सरणी के बजाय अल्पविराम से अलग एकल मान बनाता है।वेब क्लाइंट (सी #/नेट) में पोस्टिंग एरे

मैं वेब क्लाइंट के अपलोडफाइल() का उपयोग करके अपना अनुरोध पोस्ट करता हूं क्योंकि इन मेटाडेटा के अतिरिक्त मैं एक फ़ाइल पोस्ट करना चाहता हूं।

मैं वेब क्लाइंट का उपयोग एक मूल्य (अल्पविराम से अलग मूल्यों) के बजाय मानों की सरणी पोस्ट करने के लिए कैसे कर सकता हूं?

चीयर्स

Nik

उत्तर

5

पीएचपी बस एक सरणी के लिए सरणी प्रारूप के साथ भेजा से अधिक मान परिवर्तित करने के लिए एक पार्सर का उपयोग करता है। प्रारूप <arrayName>[<key>] है।

तो यदि आप $_GET से PHP में एक सरणी प्राप्त करना चाहते हैं तो इन क्वेरी पैरामीटर जोड़ें: x[key1] और x[key2]। PHP में $_GET['x'] 2 आइटमों के साथ एक सरणी होगी: ["x"]=> array(2) { ["key1"]=> <whatever> ["key2"]=> <whatever> }

public static class WebClientExtension 
{ 
    public static void AddArray(this WebClient webClient, string key, params string[] values) 
    { 
     int index = webClient.QueryString.Count; 

     foreach (string value in values) 
     { 
      webClient.QueryString.Add(key + "[" + index + "]", value); 
      index++; 
     } 
    } 
} 

और कोड में:

webClient.AddArray("x", "1", "2", "3"); 
webClient.AddArray("x", "4"); 

या मैन्युअल:

webClient.QueryString.Add("x[key1]", "4"); 
webClient.QueryString.Add("x[key2]", "1"); 

वहाँ, कोई त्रुटि जाँच है आदि -

संपादित आपको इस एक्सटेंशन विधि की कोशिश कर सकते आप इसे स्वयं कर सकते हैं :)

+0

सही, इस प्रकार PHP एक सरणी को पार करता है। लेकिन वेब क्लाइंट, जहां तक ​​मुझे पता है, इसके बजाय ["x"] = "जो भी हो, जो भी" दे, जो मैं नहीं भेजना चाहता हूं। क्या आपके पास कोई सुझाव है कि मैं वेब क्लाइंट को सही तरीके से कैसे व्यवहार करता हूं? – niklassaers

+0

@niklassaers: 'webClient.QueryString.Add ("x [key1]", "4") के साथ;' और 'webClient.QueryString.Add ("x [key2]", "3");' मैं हमेशा समाप्त करता हूं- '_ _GET' में सरणी के साथ। मेरा PHP संस्करण 5.3.2 है। –

+0

टिप के लिए धन्यवाद, मैं इसे एक भंवर सोमवार दे दूंगा। :-) – niklassaers

संबंधित मुद्दे