web-dev-qa-db-ja.com

AFNetworking-無効なパラメーターが満たされていない:url

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に問題はありますか?ありがとう。

17
arlg

Leonのコメントで述べているように、NSParameterAssertをコメントアウトすることは理想的な解決策ではありません。 AFNetworkingの作成者による理由により、そこで主張が行われました。アサーションを渡さないコードは、無効なURLが原因である可能性があります。

NSURLファクトリメソッド(つまり、+ URLWithString:およびその兄弟)は、無効なURL文字列が渡されるとnilを返します。このコンテキストでは、無効な文字列は無効なURLを含む文字列です。

アサーションにコメントする代わりにすべきことは、AFHTTPClientインスタンスに無効なURLを渡していないことを確認することです。 この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];
26
Kasper Munck

私はこのエラーが発生しました、原因はURLの先頭のスペースでした:

 http://Host.com/etc
^
5
James Webster

kasperが言うように->「NSStringのstringByAddingPercentEscapesUsingEncodingメソッドを使用してパーセントエスケープを追加できます」

それはiOS 9で廃止されたので、以下を使用するか、より良い

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
2
Amr Angry

今日、私はこの主張で奇妙な事件を起こしました。私の問題は、他のテキストエディター(Sublime)からURLをコピーしたことでした。そのため、URLは無効でした。

何度かテストするまでは信じていませんでした。

0
ArturOlszak

その働きを願って.. AFnetworingクラス名AFURLRequestSerialization.m

commented the line 227 : // NSParameterAssert(url);
0
yogesh wadhwa