AFNetworking - 无效参数不满足:url



我刚刚在ios7上尝试了AFNetwork,但出现此错误:

    /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的lib有问题吗?谢谢。

正如Leon在他的评论中所说,注释掉NSParameterAssert并不是一个理想的解决方案。AFNetworking的作者出于某种原因提出了一个断言。未传递断言的代码可能是由无效的 URL 引起的。

请记住,NSURL工厂方法(即 + URLWithString: 及其同级)在传递无效 URL 字符串时将返回 nil。在此上下文中,无效字符串是包含无效 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];
}

或者,您可以使用 NSStringstringByAddingPercentEscapesUsingEncoding 方法添加百分比转义。喜欢这个:

NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

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

 http://host.com/etc
^

正如Kasper所说 --> "您可以使用NSString的stringByAddingPercentEscapesUsingEncode方法添加百分比转义"

或者更好地使用以下方法,因为它在iOS 9中已弃用

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

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

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

希望它能正常工作。In AFnetworing 类名 AFURLRequestSerialization.m

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

最新更新