首页 > iOS开发, 如何通过HTTP Post发送这个符号"&"到服务器?

iOS开发, 如何通过HTTP Post发送这个符号"&"到服务器?

用的是系统自带的 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))
这个方法, 但需要注意的是, 这两个方法用一个就行, 不要重复使用.


post 内容是这样的
key1=value1&key2=value2

你的data=&&&&服务端只能认出data=null

所有value都UrlEncode一下

【热门文章】
【热门文章】