您的位置:首页 > 移动开发 > IOS开发

iOS开发中URL中不合法字符的转义

2016-11-24 09:09 399 查看
    通常我们在拼接网络请求Url的时候,比如请求网络图片,通过get方法请求网络数据,有时会遇到请求失败的问题,于是各种找原因,就是不明白问题出在哪里。我也是遇到了这种问题最后才发现我本来请求接口里有个“+”,而到服务器端反馈给我的信息显示变成了空格“ ”,后来才反应过来,原来是请求之前要对url中的特殊字符进行转义!

    通常用到的URL转义有两种方式:

    方式一:stringByAddingPercentEscapesUsingEncoding(有些特殊的字符不能转义比如“+”)
NSString *encodeUrlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    方式二:CFURLCreateStringByAddingPercentEscapes(有一个需要转义的字符集,可以将所有需要转义的字符转义成百分数)

NSString *encodeUrlStr=(__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)urlStr,CFSTR("!*'();:@&=+$,/?%#[]"),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));    转义URL一般会用在涉及加密解密的时候,因为正常的字符串加密之后就可能会出现&,+,#等等特殊的符号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: