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.

This commit is contained in:
Dan Thorpe 2011-11-17 15:09:21 +00:00
parent 920b01d33f
commit 0da3ec89d2

View File

@ -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:@"&"];
}