http请求中字符转义

      由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。

较为特殊的字符例如:!*'();:@&=+$,/?%#[]

我们需要对含有这些字符的部分进行处理:

比如请求"http://m.xxx.com/login.action?username=liyong&psw=&123&time=20120723"这样的url请求时,其中的密码部分因为包含特殊字符“&123”,所以会被url认为是分割参数的标志,参数会被错误的分割如下:

username=liyong,psw=空,123=空,time=20120723

解决办法:

因此,如果想正确的传递带有特殊字符的密码,需要对密码做如下处理:

password = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef) password,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));

注意:这样的encoding只能对params的内容,不要对整个url这样做。

这个时候密码就是“&123”了,因为“&”被转译成了“&”,这样就可以传递带特殊字符的密码了。

可以抽去出来当成一个公共的方法,NSString * encodeURLParam(NSString* paramString ){}

参考链接:http://www.cnblogs.com/spiderdzl/p/5179331.html

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

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,166评论 2 7
  • 一、GET/POST方法简介&用户安全 1、GET/POST方法简介 在客户端和服务器之间进行请求-响应时,两种最...
    方圆十里不留母狗阅读 32,478评论 0 13
  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,187评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,464评论 19 139
  • I was a jerk in 2001年 4月1日——中美撞机事件。7月13日——北京赢得2008年奥运会的主办...
    颜止语阅读 3,846评论 3 1