18

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

4

5 回答 5

27

正如 Leon 在评论中所说,注释掉NSParameterAssert并不是一个理想的解决方案。的作者提出了一个断言是有原因的AFNetworking。没有通过断言的代码很可能是由无效的 URL 引起的。

请记住,NSURL工厂方法(即+ URLWithString:及其同级方法)将nil在传递无效 URL 字符串时返回。在这种情况下,无效字符串是包含无效 URL 的字符串。

您应该做的而不是评论我们的断言,而是确保您没有将任何无效的 URL 传递给您的AFHTTPClient实例。这个 Stackoverflow 答案提供了一个如何验证 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];
}

NSString或者,您可以使用'stringByAddingPercentEscapesUsingEncoding方法添加百分比转义。像这样:

NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2014-02-07T11:05:27.363 回答
5

我刚遇到这个错误,原因是网址开头有一个空格:

 http://host.com/etc
^
于 2015-06-02T15:26:29.680 回答
2

正如卡斯珀所说——>“你可以使用 NSString 的 stringByAddingPercentEscapesUsingEncoding 方法添加百分比转义”

或更好地使用以下内容,因为它在 ios 9 中已弃用

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
于 2017-06-23T16:25:59.700 回答
0

希望它的工作..在 AFnetworking 类名 AFURLRequestSerialization.m

commented the line 227 : // NSParameterAssert(url);
于 2015-10-14T06:27:56.863 回答
0

我今天有一个奇怪的案例,这个断言。我的问题是我从其他文本编辑器(Sublime)复制了 url,这就是 url 无效的原因。

直到我测试了几次,我才相信。

于 2015-09-09T16:07:37.123 回答