今天工作当中,网络请求的过程中有遇到个问题。

 

http get请求中合成的url在服务器后台可能会遇到一些特殊字符无法识别的问题(我是在用3DES加密的时候遇到这样的问题),因为考虑到url只能识别一些简单的24个英文字符等等,而不能识别类似于“+,=,-,!”这些字符,所以需要对url进行再一次编码

 

这样的编码分为两类

一是直接对url进行编码,所用到的函数如下: strEncrypt为对应的url

NSString *strEncryptFinal = [strEncrypt stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

二另外一类是对get请求中的parms参数进行编码,函数如下

//NSString类型转换成CFStringRef

    CFStringRef strRef = (__bridge CFStringRef)strEncrypt; //strEncrypt为相应的想要编码的字符串

    strEncrypt = (__bridge NSString *)strRef;

    //转换成url上可被识别的字符串

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