2013-09-16 8 views
15

मैं सिर्फ iOS7 पर AFNetworking की कोशिश की और मैं इस त्रुटि मिलती है:AFNetworking - अमान्य पैरामीटर नहीं संतोषजनक: यूआरएल

/Classes/AFHTTPClient.m:227 
2013-09-16 18:25:57.557 App[13531:a0b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: url 

मैं नहीं जानता कि क्या हो रहा है, वहाँ एक iOS7 लिब के साथ कोई समस्या है? धन्यवाद।

+1

में अब भी इस समस्या से जूझ रहा है। क्या आपको अभी तक कोई समाधान मिला है? – Leon

+0

मैंने लाइन 227: // एनएसपीएमिटरएएसएसर्ट (यूआरएल) पर टिप्पणी की; और यह काम करता है .. – arlg

+2

यदि आप उस कोड को शामिल करते हैं जहां प्रोग्राम त्रुटि हो रहा है तो यह आपकी सहायता करेगा। लेकिन, आपको यह जांचना चाहिए कि क्या आप यूआरएल पैरामीटर में शून्य पास कर रहे हैं जैसे: '[[AFHTTPClient alloc] initWithBaseURL: nil] '। NSParameterAssert (url) HTTP क्लाइंट को शून्य URL के साथ प्रारंभ करने से रोकने के लिए है। –

उत्तर

23

जैसा कि लियोन ने अपनी टिप्पणी में कहा है, NSParameterAssert पर टिप्पणी करना एक आदर्श समाधान नहीं है। AFNetworking के लेखक द्वारा एक कारण के लिए एक दावा किया गया है। कोड को उत्तीर्ण नहीं करने वाला कोड अमान्य यूआरएल के कारण होने की संभावना है।

याद रखें कि NSURL फैक्ट्री विधियों (यानी, + URLWithString: और इसके भाई बहन) nil वापस आते हैं जब वे एक अवैध URL स्ट्रिंग पास कर देते हैं। इस संदर्भ में, एक अवैध स्ट्रिंग एक स्ट्रिंग है जिसमें एक अवैध URL है।

हमारे दावे पर टिप्पणी करने के बजाय आपको क्या करना चाहिए, यह सुनिश्चित कर रहा है कि आप अपने AFHTTPClient उदाहरण पर किसी भी अवैध URL को पास नहीं कर रहे हैं। This Stackoverflow answers एक उदाहरण देता है कि आप एक यूआरएल को कैसे वैध कर सकते हैं। यहाँ जवाब से एक नमूना है:

- (BOOL)validateUrl:(NSString *)candidate { 
    NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"; 
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate]; 
} 

वैकल्पिक रूप से, आप का उपयोग कर NSString के stringByAddingPercentEscapesUsingEncoding विधि प्रतिशत पलायन जोड़ सकते हैं। इस तरह:

http://host.com/etc 
^ 
+0

मुझे पता है कि यह एक आदर्श समाधान नहीं था, लेकिन मुझे एक त्वरित सुधार की आवश्यकता थी। मैं अभी आपका जवाब आजमा नहीं सकता क्योंकि मैं अब परियोजना पर काम नहीं कर रहा हूं। वैसे भी, उत्तर के लिए धन्यवाद, मैं इसे तब कोशिश करूंगा जब मैं प्रोजेक्ट पर फिर से काम करूंगा :)। – arlg

+0

खुशी मैं मदद कर सकता था :-) –

+0

परिवर्तन एन्कोडिंग मेरी मदद करें। धन्यवाद –

4

मैं सिर्फ इस त्रुटि थी, कारण यूआरएल के शुरू में एक अंतरिक्ष था। मेरी समस्या यह थी कि मैंने अन्य टेक्स्ट एडिटर (सब्लिमे) से यूआरएल कॉपी किया है और यही कारण है कि यूआरएल अवैध था।

मैं विश्वास नहीं कर रहा था जब तक कि मैंने इसे कुछ बार परीक्षण नहीं किया।

0

मैं इस ज़ोर के साथ आज एक अजीब मामला था:

NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
0

अपने कार्य आशा है कि .. AFnetworing वर्ग के नाम AFURLRequestSerialization.m में

commented the line 227 : // NSParameterAssert(url); 
0
कैस्पर जवाब के रूप में

आप

"आप NSString के stringByAddingPercentEscapesUsingEncoding पद्धति का उपयोग करके प्रतिशत पलायन जोड़ सकते हैं" हो सकता है या बेहतर के बाद से निम्न का उपयोग यह आईओएस 9

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; 
संबंधित मुद्दे