用的是系统自带的 NSURLRequest, 用post传输, 数据写在body里, 别的符号都没问题, 唯独 "&" 这个符号不行, 一旦包含这个符号服务器就不接受. 但是通过网页或者android输入&符号就没问题.
如果把&转化成escape string , 也就是说 & 转化成%26, 服务器端可以接受, 但显示的不是&, 而是%26,
所以请问, 怎么才能让正常发送&,别让服务器端正常接收和显示呢?
服务器是php的, 编码是utf8
具体如下
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://xxx.com/server.php"]];
postRequest.HTTPMethod = @"POST";
[postRequest setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *bodyString = [NSString stringWithFormat:@"data=&&&&"];
postBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
NSURLConnection *postConnect = [[NSURLConnection alloc]initWithRequest:postRequest delegate:self];
试了多次终于搞定了, 原来是之前自己弄错了, 把&转化了两次, 所以服务器端总是无法识别.
[myString stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)];
常用的这个方法不会转化&, 需要使用
(NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)url, NULL, (CFStringRef)@"&", kCFStringEncodingUTF8))
这个方法, 但需要注意的是, 这两个方法用一个就行, 不要重复使用.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。