Я использую AFNetworking в моем приложении для iOS.Я обнаружил проблему, которая возникает, когда параметры запроса содержат знаки процента.Тогда кодирование не выполняется.Метод AFURLEncodedStringFromStringWithEncoding
возвращает ноль.
Я тестировал этот код, и он печатает (null)
:
NSLog(@"%@", AFURLEncodedStringFromStringWithEncoding(@"%", NSUTF8StringEncoding));
Ожидаемый результат должен быть: %25
.Другие символы могут быть закодированы без проблем.
Метод определяется следующим образом:
NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) {
static NSString * const kAFLegalCharactersToBeEscaped = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\|~ ";
// Following the suggestion in documentation for `CFURLCreateStringByAddingPercentEscapes` to "pre-process" URL strings (using stringByReplacingPercentEscapesUsingEncoding) with unpredictable sequences that may already contain percent escapes.
return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)[string stringByReplacingPercentEscapesUsingEncoding:encoding], NULL, (CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)) autorelease];
}
Есть идеи, что здесь происходит не так?
РЕДАКТИРОВАТЬ: Эта проблема была исправлена в AFNetworking .