Преобразовать NSString в форму, передаваемую в запросе HTTP POST - PullRequest
1 голос
/ 21 января 2012

Есть ли простой способ избежать строки NSString, чтобы я мог использовать ее в запросе HTTP POST?

Я пробовал stringByAddingPercentEscapesUsingEncoding, но следующее:

[@"~!@#$%^&*()-+\"'" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

дает мне:

~!@%23$%25%5E&*()-+%22'

, который нельзя использовать в запросе HTTP POST, потому что & оставлен без экранирования;поэтому другой конец интерпретирует все, что следует за ним, как еще один аргумент.

1 Ответ

1 голос
/ 21 января 2012

Следующая функция, часть NSString+URLEncoding.m, делает именно то, что мне нужно:

- (NSString *)encodedURLParameterString {
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                       (CFStringRef)self,
                                                                       NULL,
                                                                       CFSTR(":/=,!$&'()*+;[]@#?"),
                                                                       kCFStringEncodingUTF8);
    return [result autorelease];
}
...