2012-06-18 17 views
5

के लिए एकाधिक मान निर्दिष्ट करने के लिए कैसे करें I AFHTTP क्लाइंट विधि "postPath" का उपयोग कर एक HTTP अनुरोध के लिए एक पैरामीटर कुंजी के लिए एकाधिक मानों को पारित करने का प्रयास कर रहा हूं। हालांकि, पैरामीटर वैरिएबल एक NSDictionary है इसलिए मैं अपनी कुंजी "ईमेल" के लिए एकाधिक मान सेट नहीं कर सकता। मैंने ई-मेल मानों को अल्पविराम से अलग स्ट्रिंग के रूप में भेजने का प्रयास किया है, लेकिन यह काम नहीं करता है क्योंकि मेरा सर्वर एक त्रुटि देता है कि मैंने कोई ई-मेल मान निर्दिष्ट नहीं किया है।AFNetworking - एक कुंजी

मैंने multipartFormRequestWithMethod विधि का उपयोग करने के बारे में प्रलेखन में पढ़ा था, लेकिन मैं पूरी तरह से यह काम नहीं कर पाया कि यह कैसे काम कर सकता है। क्या कोई भी एक विधि के लिए एकाधिक मानों के साथ इस विधि का उपयोग करने का उदाहरण प्रदान कर सकता है?

धन्यवाद

रिच

+0

बेहतर देर के बाद से NSDictionary डुप्लिकेट चाबी की अनुमति नहीं है, यह अपने विशेष यूज-केस को पूरा करने से रोक देता है। आप इस विधि में बनाए गए NSMutableURLRequest को ले सकते हैं, और मैन्युअल रूप से पोस्ट बॉडी स्ट्रिंग का निर्माण कर सकते हैं। –

उत्तर

2

आप एक ही कुंजी के लिए अनेक मान निर्धारित नहीं कर सकते। हालांकि, आप एक सरणी रखने के लिए एक कुंजी परिभाषित कर सकते हैं, जिसमें स्वयं कई मान होते हैं।

ऐसा कहा जाता है कि ऐसा लगता है कि यह email एक ऐसा क्षेत्र होगा जिसमें कई परिभाषाएं होनी चाहिए। यदि आप एकाधिक मान स्वीकार करना चाहते हैं, तो आपको शायद उस पैरामीटर को emails पर पुनर्नामित करना चाहिए।

+0

प्रतिक्रिया के लिए धन्यवाद। मैंने ईमेल पैरामीटर को एनएसएआरएआरए पास करने का प्रयास किया लेकिन सर्वर ने इसी तरह जवाब दिया कि मैंने एक ई-मेल पता नहीं पारित किया है। कोई विचार? –

+0

तो ऐसा लगता है कि AFNetworking कोड "ईमेल" की कुंजी ले रहा है और इसे "ईमेल []" में बदल रहा है, यही कारण है कि सर्वर पास किए गए ई-मेल पते को नहीं पहचानता है। क्या ऐसा होने से रोकने के लिए कोई रास्ता है? –

+0

@RichMorey यह बिंदु की तरह है: 'ईमेल []' एक ऐसा सम्मेलन है जो रेलों जैसे कई ढांचे द्वारा उपयोग किया जाता है ताकि यह संकेत दिया जा सके कि कई मान पारित किए जा रहे हैं। क्या आपने एपीआई लिखा था? अगर आपको ऐसा सत्यापन मिल रहा है, तो ऐसा लगता है कि सर्वर सिर्फ एक ही ई-मेल चाहता है। ऐसा क्यों न करें? – mattt

4

एक कुंजी के लिए बहु मानों को जोड़ना।

NSDictionary + NSArray

उदाहरण के लिए का उपयोग कर:

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", [NSArray arrayWithObjects:@"value3",@"value4",@"value5",nil], @"param3", nil]; 

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/yourhostpath" parameters:params]; 

आप "Url" और अपने खुद के लिए "yourhostpath" की जगह की जरूरत है, इस के लिए AFNetworking की AFHttpClient डेमो कोड से संदर्भ लें।

12

एक कुंजी के लिए बहु क्वेरी मानों को जोड़ना।

यदि आप NSDictionary + NSSet का उपयोग करते हैं तो आपको एनएसएआरएआरई से [] के बिना क्वेरी यूआरएल मिलता है।

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
[NSSet setWithObjects:@"value1", @"value2", nil], @"myKey", nil]; 

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
NSURLRequest *request = [httpClient requestWithMethod:@"GET" path:@"/path" parameters:params]; 

पुनश्च: कभी नहीं की तुलना में ...

+0

क्या होगा अगर मैं एक ही मूल्य के साथ कई पैरामीटर भेजना चाहता हूं? यह '[NSSet setWithObjects: @" value1 ", @" value1 ", @" value2 ", @" value2 ", nil]' काम नहीं कर रहे हैं। – krotov