正确的NSURL请求编码



我需要对POST请求的正文进行编码,但我不知道该使用哪一个。我在把"("转换成"28"时遇到了麻烦。到目前为止,我正在使用NSUTF8StringEncoding, NSISOLatin1StringEncoding, NSISOLatin2StringEncoding。没有一个是有效的。

我要发送的参数的名称是:

monitoring_report[monitoring_report_time(1i)]=

应该转换为:

monitoring_report%5monitoring_report_time%281i%29%5D=

,我得到的是:

monitoring_report%5Bmonitoring_report_time(1i)%5D=

使用具有legalURLCharactersToBeEscaped参数的Core Foundation函数CFURLCreateStringByAddingPercentEscapes。url中的括号是合法的,这就是为什么默认情况下它们不被转义的原因。

的例子:

NSString *input = @"monitoring_report[monitoring_report_time(1i)]=";
NSString *output = [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)input, NULL, CFSTR("()"), kCFStringEncodingUTF8) autorelease];
NSLog(@"%@", output); // monitoring_report%5Bmonitoring_report_time%281i%29%5D=

最新更新