我刚刚在ios7上尝试了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
我不知道发生了什么,lib和ios7有问题吗? 感谢。
答案 0 :(得分:25)
莱昂在评论中表示,评论NSParameterAssert
并不是一个理想的解决方案。 AFNetworking
的作者提出了一个有理由的断言。未传递断言的代码可能是由无效的URL引起的。
请记住,NSURL
工厂方法(即+ URLWithString:
及其兄弟)在传递无效的URL字符串时将返回nil
。在此上下文中,无效字符串是包含无效URL的字符串。
您应该做什么而不是评论我们的断言,确保您没有将任何无效的URL传递给您的AFHTTPClient
实例。 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
的{{1}}方法添加百分比转义符。像这样:
stringByAddingPercentEscapesUsingEncoding
答案 1 :(得分:5)
我刚刚遇到此错误,原因是网址开头的空格:
http://host.com/etc
^
答案 2 :(得分:1)
作为卡斯帕的回答 你可以“使用NSString的stringByAddingPercentEscapesUsingEncoding方法添加百分比转义”
或更好地使用以下内容,因为它在ios 9中已弃用
path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
答案 3 :(得分:0)
今天我对这个断言有一个奇怪的案例。我的问题是我从其他文本编辑器(Sublime)复制了url,这就是为什么url无效。
直到我测试了几次,我才相信。
答案 4 :(得分:0)
希望它的工作..在AFnetworing类名AFURLRequestSerialization.m
e1_var.get