AFNetworking - 无效参数不满足:url

时间:2013-09-16 16:32:06

标签: ios afnetworking

我刚刚在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有问题吗? 感谢。

5 个答案:

答案 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