[Issue #266] Fixing GET and POST parameter encoding
This commit is contained in:
parent
1e408ba2af
commit
9e5ff6dcf5
1 changed files with 26 additions and 25 deletions
|
|
@ -120,7 +120,8 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn
|
|||
@property (readwrite, nonatomic, retain) id key;
|
||||
@property (readwrite, nonatomic, retain) id value;
|
||||
|
||||
- (id)initWithKey:(NSString *)key value:(NSString *)value;
|
||||
- (id)initWithKey:(id)key value:(id)value;
|
||||
- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding;
|
||||
|
||||
@end
|
||||
|
||||
|
|
@ -128,7 +129,7 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn
|
|||
@synthesize key = _key;
|
||||
@synthesize value = _value;
|
||||
|
||||
- (id)initWithKey:(NSString *)key value:(NSString *)value {
|
||||
- (id)initWithKey:(id)key value:(id)value {
|
||||
self = [super init];
|
||||
if (!self) {
|
||||
return nil;
|
||||
|
|
@ -146,56 +147,56 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn
|
|||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [NSString stringWithFormat:@"%@=%@", self.key, self.value];
|
||||
- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding {
|
||||
return [NSString stringWithFormat:@"%@=%@", self.key, AFURLEncodedStringFromStringWithEncoding([self.value description], stringEncoding)];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndValueWithEncoding(NSString *key, id value, NSStringEncoding stringEncoding);
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndDictionaryValueWithEncoding(NSString *key, NSDictionary *value, NSStringEncoding stringEncoding);
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndArrayValueWithEncoding(NSString *key, NSArray *value, NSStringEncoding stringEncoding);
|
||||
extern AFQueryStringComponent * AFQueryStringComponentFromKeyAndValueWithEncoding(id key, id value, NSStringEncoding stringEncoding);
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndValue(NSString *key, id value);
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndDictionaryValue(NSString *key, NSDictionary *value);
|
||||
extern NSArray * AFQueryStringComponentsFromKeyAndArrayValue(NSString *key, NSArray *value);
|
||||
|
||||
NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) {
|
||||
return [[AFQueryStringComponentsFromKeyAndValueWithEncoding(nil, parameters, stringEncoding) valueForKeyPath:@"description"] componentsJoinedByString:@"&"];
|
||||
NSMutableArray *mutableComponents = [NSMutableArray array];
|
||||
for (AFQueryStringComponent *component in AFQueryStringComponentsFromKeyAndValue(nil, parameters)) {
|
||||
[mutableComponents addObject:[component URLEncodedStringValueWithEncoding:stringEncoding]];
|
||||
}
|
||||
|
||||
AFQueryStringComponent * AFQueryStringComponentFromKeyAndValueWithEncoding(id key, id value, NSStringEncoding stringEncoding) {
|
||||
return [[[AFQueryStringComponent alloc] initWithKey:AFURLEncodedStringFromStringWithEncoding([key description], stringEncoding) value:AFURLEncodedStringFromStringWithEncoding([value description], stringEncoding)] autorelease];
|
||||
return [mutableComponents componentsJoinedByString:@"&"];
|
||||
}
|
||||
|
||||
NSArray * AFQueryStringComponentsFromKeyAndValueWithEncoding(NSString *key, id value, NSStringEncoding stringEncoding) {
|
||||
NSArray * AFQueryStringComponentsFromKeyAndValue(NSString *key, id value) {
|
||||
NSMutableArray *mutableQueryStringComponents = [NSMutableArray array];
|
||||
|
||||
if([value isKindOfClass:[NSDictionary class]]) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndDictionaryValueWithEncoding(key, value, stringEncoding)];
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndDictionaryValue(key, value)];
|
||||
} else if([value isKindOfClass:[NSArray class]]) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndArrayValueWithEncoding(key, value, stringEncoding)];
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndArrayValue(key, value)];
|
||||
} else {
|
||||
[mutableQueryStringComponents addObject:AFQueryStringComponentFromKeyAndValueWithEncoding(key, value, stringEncoding)];
|
||||
[mutableQueryStringComponents addObject:[[[AFQueryStringComponent alloc] initWithKey:key value:value] autorelease]];
|
||||
}
|
||||
|
||||
return mutableQueryStringComponents;
|
||||
}
|
||||
|
||||
NSArray * AFQueryStringComponentsFromKeyAndDictionaryValueWithEncoding(NSString *key, NSDictionary *value, NSStringEncoding stringEncoding){
|
||||
NSArray * AFQueryStringComponentsFromKeyAndDictionaryValue(NSString *key, NSDictionary *value){
|
||||
NSMutableArray *mutableQueryStringComponents = [NSMutableArray array];
|
||||
|
||||
[value enumerateKeysAndObjectsUsingBlock:^(id k, id v, BOOL *stop) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndValueWithEncoding((key ? [NSString stringWithFormat:@"%@[%@]", key, k] : k), v, stringEncoding)];
|
||||
[value enumerateKeysAndObjectsUsingBlock:^(id nestedKey, id nestedValue, BOOL *stop) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)];
|
||||
}];
|
||||
|
||||
return mutableQueryStringComponents;
|
||||
}
|
||||
|
||||
NSArray * AFQueryStringComponentsFromKeyAndArrayValueWithEncoding(NSString *key, NSArray *value, NSStringEncoding stringEncoding) {
|
||||
NSArray * AFQueryStringComponentsFromKeyAndArrayValue(NSString *key, NSArray *value) {
|
||||
NSMutableArray *mutableQueryStringComponents = [NSMutableArray array];
|
||||
|
||||
[value enumerateObjectsUsingBlock:^(id v, NSUInteger idx, BOOL *stop) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndValueWithEncoding([NSString stringWithFormat:@"%@[]", key], v, stringEncoding)];
|
||||
[value enumerateObjectsUsingBlock:^(id nestedValue, NSUInteger idx, BOOL *stop) {
|
||||
[mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)];
|
||||
}];
|
||||
|
||||
return mutableQueryStringComponents;
|
||||
|
|
@ -433,7 +434,7 @@ static void AFReachabilityCallback(SCNetworkReachabilityRef __unused target, SCN
|
|||
NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil];
|
||||
__block AFMultipartFormData *formData = [[AFMultipartFormData alloc] initWithStringEncoding:self.stringEncoding];
|
||||
|
||||
for (AFQueryStringComponent *component in AFQueryStringComponentsFromKeyAndValueWithEncoding(nil, parameters, self.stringEncoding)) {
|
||||
for (AFQueryStringComponent *component in AFQueryStringComponentsFromKeyAndValue(nil, parameters)) {
|
||||
[formData appendPartWithFormData:[component.value dataUsingEncoding:self.stringEncoding] name:component.key];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue