From ae4981eef163d563e147117c5ea04dfd350e8dce Mon Sep 17 00:00:00 2001 From: Kra Larivain Date: Mon, 15 Apr 2013 17:45:36 -0700 Subject: [PATCH] - fix for unescaped brackets in params values --- AFNetworking/AFHTTPClient.m | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index c06640b..4bd5d6b 100644 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -80,11 +80,13 @@ static NSString * AFBase64EncodedStringFromString(NSString *string) { return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; } -static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { +static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding, BOOL isValue) { static NSString * const kAFCharactersToBeEscaped = @":/?&=;+!@#$()~',*"; - static NSString * const kAFCharactersToLeaveUnescaped = @"[]."; - - return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); + static NSString * const kAFParamNameCharactersToLeaveUnescaped = @"[]."; + static NSString * const kAFParamValueCharactersToLeaveUnescaped = @""; + + NSString *unescaped = isValue ? kAFParamValueCharactersToLeaveUnescaped : kAFParamNameCharactersToLeaveUnescaped; + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)unescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); } #pragma mark - @@ -116,9 +118,9 @@ static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NS - (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { if (!self.value || [self.value isEqual:[NSNull null]]) { - return AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding); + return AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding, NO); } else { - return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.value description], stringEncoding)]; + return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding, NO), AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.value description], stringEncoding, YES)]; } }