From 0da3ec89d23024d837a138684fa4bf6afa633c87 Mon Sep 17 00:00:00 2001 From: Dan Thorpe Date: Thu, 17 Nov 2011 15:09:21 +0000 Subject: [PATCH] Modifies the query paramter function to correctly handle argument arrays. Now it adds the key[]=value1&key[]=value2 instead of key=(value1,value2) which isn't compatible with most HTTP servers. --- AFNetworking/AFHTTPClient.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index a812d33..245ad67 100644 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -90,10 +90,19 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding encoding) { NSMutableArray *mutableParameterComponents = [NSMutableArray array]; for (id key in [parameters allKeys]) { - NSString *component = [NSString stringWithFormat:@"%@=%@", AFURLEncodedStringFromStringWithEncoding([key description], encoding), AFURLEncodedStringFromStringWithEncoding([[parameters valueForKey:key] description], encoding)]; - [mutableParameterComponents addObject:component]; - } - + id arg = [parameters valueForKey:key]; + if ([arg isKindOfClass:[NSArray class]]) { + // For arrays, we add each item to the query string + NSString *keyComponent = AFURLEncodedStringFromStringWithEncoding([NSString stringWithFormat:@"%@[]", [key description]], encoding); + for (id obj in (NSArray *)arg) { + NSString *component = [NSString stringWithFormat:@"%@=%@", keyComponent, AFURLEncodedStringFromStringWithEncoding([obj description], encoding)]; + [mutableParameterComponents addObject:component]; + } + } else { + NSString *component = [NSString stringWithFormat:@"%@=%@", AFURLEncodedStringFromStringWithEncoding([key description], encoding), AFURLEncodedStringFromStringWithEncoding([arg description], encoding)]; + [mutableParameterComponents addObject:component]; + } + } return [mutableParameterComponents componentsJoinedByString:@"&"]; }