@@ -116,12 +116,12 @@ + (NSString *)queryStringWithParams:(NSDictionary *)params URLEscapeValues:(BOOL
116116 if (params.allKeys .count == 0 ) return @" " ;
117117
118118 NSMutableString *q = [NSMutableString string ];
119- [params enumerateKeysAndObjectsUsingBlock: ^(NSString *key, id value, BOOL *stop) {
119+ [params enumerateKeysAndObjectsUsingBlock: ^(NSString *key, NSString * value, BOOL *stop) {
120120 if ([value isKindOfClass: [NSString class ]]) {
121121 if (escapeValues) {
122- value = [( NSString *) value urlencode ];
122+ value = [value URLEncodedString ];
123123 } else {
124- value = [( NSString *) value stringByReplacingOccurrencesOfString: @" " withString: @" +" ];
124+ value = [value stringByReplacingOccurrencesOfString: @" " withString: @" +" ];
125125 }
126126 }
127127 [q appendFormat: @" %@ =%@ &" , key, value];
@@ -132,24 +132,26 @@ + (NSString *)queryStringWithParams:(NSDictionary *)params URLEscapeValues:(BOOL
132132 return q;
133133}
134134
135- - (NSString *)urlencode {
136- NSMutableString *output = [NSMutableString string ];
137- const unsigned char *source = (const unsigned char *)[self UTF8String ];
138- int sourceLen = (int )strlen ((const char *)source);
139- for (int i = 0 ; i < sourceLen; ++i) {
140- const unsigned char thisChar = source[i];
141- if (thisChar == ' ' ){
142- [output appendString: @" +" ];
143- } else if (thisChar == ' .' || thisChar == ' -' || thisChar == ' _' || thisChar == ' ~' ||
144- (thisChar >= ' a' && thisChar <= ' z' ) ||
145- (thisChar >= ' A' && thisChar <= ' Z' ) ||
146- (thisChar >= ' 0' && thisChar <= ' 9' )) {
147- [output appendFormat: @" %c " , thisChar];
135+ - (NSString *)URLEncodedString {
136+ NSMutableString *encoded = [NSMutableString string ];
137+ const unsigned char *source = (const unsigned char *)self.UTF8String ;
138+ NSInteger sourceLen = (NSInteger )strlen ((const char *)source);
139+
140+ for (NSInteger i = 0 ; i < sourceLen; i++) {
141+ const unsigned char c = source[i];
142+ if (c == ' ' ){
143+ [encoded appendString: @" +" ];
144+ } else if (c == ' .' || c == ' -' || c == ' _' || c == ' ~' ||
145+ (c >= ' a' && c <= ' z' ) ||
146+ (c >= ' A' && c <= ' Z' ) ||
147+ (c >= ' 0' && c <= ' 9' )) {
148+ [encoded appendFormat: @" %c " , c];
148149 } else {
149- [output appendFormat: @" %%%02X " , thisChar ];
150+ [encoded appendFormat: @" %%%02X " , c ];
150151 }
151152 }
152- return output;
153+
154+ return encoded;
153155}
154156
155157@end
0 commit comments