2013-09-16 62 views
15

我只是想AFNetworking上ios7和我得到這個錯誤:AFNetworking - 無效的參數並不令人滿意:URL

/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 

我不知道是怎麼回事,有沒有與LIB的ios7的問題嗎? 謝謝。

+1

我現在也在努力解決這個問題。你有沒有找到解決方案? – Leon

+0

我評論了第227行:// NSParameterAssert(url); 它的工作原理.. – arlg

+2

這將有助於如果您將代碼包含在程序出錯的地方。但是,您應該檢查是否在URL參數中傳遞nil,如:[[[AFHTTPClient alloc] initWithBaseURL:nil]'。 NSParameterAssert(url)就是爲了防止用一個零URL來初始化HTTP客戶端。 –

回答

23

正如Leon在他的評論中所說的,評論出NSParameterAssert不是一個理想的解決方案。一個斷言已被放在那裏,原因是作者AFNetworking。未通過斷言的代碼很可能是由無效的URL引起的。

請記住,工廠方法(即+ URLWithString:及其兄弟)在傳遞無效URL字符串時將返回nil。在這種情況下,無效字符串是包含無效URL的字符串。

你應該做什麼而不是評論我們的斷言,確保你沒有向你的AFHTTPClient實例傳遞任何無效的URL。 This Stackoverflow answers給出了一個如何驗證URL的例子。下面是從回答樣本:

- (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]; 
} 

或者,您可以添加使用NSStringstringByAddingPercentEscapesUsingEncoding百分比法逃逸。就像這樣:

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

我知道這不是一個理想的解決方案,但我需要一個快速修復。 我現在不能嘗試你的答案,因爲我不再在這個項目上工作。無論如何,謝謝你的回答,我會嘗試一下,當我再次在項目上工作:)。 – arlg

+0

很高興我可以幫助:-) –

+0

更改編碼幫助我。謝謝 –

4

我只是有這個錯誤,原因是在URL的開頭空格:

http://host.com/etc 
^ 
0

我做了一個奇怪的情況下,今天這個斷言。我的問題是,我從其他文本編輯器(Sublime)複製了url,這就是爲什麼url無效。

我沒有相信,直到我測試了幾次。

0

希望它的工作。在AFnetworing類名AFURLRequestSerialization.m

commented the line 227 : // NSParameterAssert(url); 
0

爲卡斯帕答案 您可以

「您使用的NSString的stringByAddingPercentEscapesUsingEncoding方法可能會增加百分比越獄」或更好的使用,因爲以下它不贊成在ios 9

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; 
相關問題