开发者社区> 问答> 正文

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];       

展开
收起
a123456678 2016-07-27 13:57:09 2819 0
2 条回答
写回答
取消 提交回答
  • 余轶 ![](https://yqfile.alicdn.com/)
    2019-07-17 20:00:31
    赞同 展开评论 打赏
  • 试了多次终于搞定了, 原来是之前自己弄错了, 把&转化了两次, 所以服务器端总是无法识别.
    [myString stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)];
    常用的这个方法不会转化&, 需要使用
    (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)url, NULL, (CFStringRef)@"&", kCFStringEncodingUTF8))
    这个方法, 但需要注意的是, 这两个方法用一个就行, 不要重复使用.

    2019-07-17 20:00:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Facebook iOS App技术演化十年之路 立即下载
From Java_Android to Swift iOS 立即下载
深入剖析 iOS 性能优化 立即下载