I am using AFNetworking in my iOS application. I found a problem that occurs when query parameters contain percent signs. Then encoding is not performed. The AFURLEncodedStringFromStringWithEncoding method returns nil.
I tested this code and it prints (null) :
NSLog(@"%@", AFURLEncodedStringFromStringWithEncoding(@"%", NSUTF8StringEncoding));
Expected result should be: %25 . Other characters can be encoded without problems.
The method is defined as follows:
NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { static NSString * const kAFLegalCharactersToBeEscaped = @" ?!@ #$^&%*+,:;='\"`<>()[]{}/\\|~ "; kCFAllocatorDefault, (CFStringRef) [string stringByReplacingPercentEscapesUsingEncoding: encoding], NULL, (CFStringRef) kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding (encoding)) autorelease]; NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { static NSString * const kAFLegalCharactersToBeEscaped = @" ?!@ #$^&%*+,:;='\"`<>()[]{}/\\|~ ";
Any ideas what is going wrong here?
EDIT: Issue resolved in AFNetworking .
Felix source share