某银行iPhone客户端项目,
在客户端发送密码 "11&11111"到服务器,服务器那边显示收到的密码为"11"。
但是在html测试页中输入同样的密码字符串,服务器端却可以得到正确的字符。
解决方法,使用firefox + Tamper Data + xampp + php,在本地做了个测试,发现标准的http浏览器在发送&字符的使用,实际上是发送的%26。
OC本身也内置一个方法: stringByAddingPercentEscapesUsingEncoding: ,但是这个方法只会对百分号%这个符号进行特殊处理。
原理:
解决方法:
- (NSString *) urlEncodeValue:(NSString *)str
{ NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;=\""), kCFStringEncodingUTF8); return [result autorelease];
}
NSString *password = @"!@#$%^&*";
password = [self urlEncodeValue: password];
|
阅读(460) | 评论(0) | 转发(0) |