适当的NSURL请求编码

时间:2011-08-25 10:21:17

标签: iphone ipad http encoding character-encoding

我需要对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=

1 个答案:

答案 0 :(得分:2)

使用具有CFURLCreateStringByAddingPercentEscapes参数的Core Foundation函数legalURLCharactersToBeEscaped。 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=