iOS端post请求参数中含有"+"号,传到服务器那边变成空格问题处理

在近期的项目开发中遇到一个问题,在数据进行加密后,有些字符串加密后会含有“+”号,在服务器端接收到为空格;

在网上查了很多资料,大体方案有以下几种:

1、修改客户端

将参数中的“+”全部替换为‍“%2B”;

但是我这边测试后服务器收到的就是“%2B”,惆怅~~~

2、服务器端将空格替换为“+”,但是这种方式只适用于参数中有‍“+”没有空格的情况,不敢尝试;

或者服务器端将“%2B”全部替换为“+”,同样不想选择这种方式;

3、使用stringByAddingPercentEncodingWithAllowedCharacters方法对特殊字符转义

NSString*charactersToEscape =@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";

NSCharacterSet*allowedCharacters = [[NSCharacterSetcharacterSetWithCharactersInString:charactersToEscape]invertedSet];

NSString*encodedUrl = [urlstringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];

使用后发现“+”还是变成了“%2B”,囧~~

4、最终的处理方式是将字符串转换成16进制,服务器端再转换回去即可,成功解决问题😁😁😁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容