AFNetworking – 无效的参数不令人满意:url

我只是尝试了AFNetworking在ios7上,我得到这个错误:

/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? 谢谢。

正如Leon在评论中所说的,评论NSParameterAssert并不是一个理想的解决scheme。 AFNetworking的作者已经提出了一个AFNetworking 。 未传递断言的代码很可能是由无效的URL引起的。

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

你应该做什么而不是评论我们的断言,确保你没有传递任何无效的URL到你的AFHTTPClient实例。 这个Stackoverflow的答案给出了一个如何validationURL的例子。 以下是答案的一个示例:

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

我只是有这个错误,原因是在url开始的空间:

  http://host.com/etc ^ 

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

我没有相信,直到我testing了几次。

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

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

正如Kasper回答你可能“你可以使用NSString的stringByAddingPercentEscapesUsingEncoding方法添加百分比转义”

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

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