From 3f3a79221a2562be02c1077f24aba502a614acb9 Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Wed, 3 Oct 2012 08:49:39 -0700 Subject: [PATCH] [Issue #555] Leaving square brackets unescaped in query string parameters --- AFNetworking/AFHTTPClient.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index f8ef067..5892715 100755 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -88,10 +88,10 @@ static NSString * AFBase64EncodedStringFromString(NSString *string) { } static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { - // Escape characters that are legal in URIs, but have unintentional semantic significance when used in a query string parameter - static NSString * const kAFLegalCharactersToBeEscaped = @":/.?&=;+!@$()~"; + static NSString * const kAFCharactersToBeEscaped = @":/.?&=;+!@#$()~"; + static NSString * const kAFCharactersToLeaveUnescaped = @"[]"; - return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); } #pragma mark - @@ -237,7 +237,7 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) { if (!self) { return nil; } - + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { url = [url URLByAppendingPathComponent:@""];