? ? 通常我們在拼接網(wǎng)絡請求Url的時候,比如請求網(wǎng)絡圖片,通過get方法請求網(wǎng)絡數(shù)據(jù),有時會遇到請求失敗的問題,于是各種找原因,就是不明白問題出在哪里。我也是遇到了這種問題最后才發(fā)現(xiàn)我本來請求接口里有個“+”,而到服務器端反饋給我的信息顯示變成了空格“ ”,后來才反應過來,原來是請求之前要對url中的特殊字符進行轉(zhuǎn)義!
? ? 通常用到的URL轉(zhuǎn)義有兩種方式:
? ? 方式一:stringByAddingPercentEscapesUsingEncoding(有些特殊的字符不能轉(zhuǎn)義比如“+”)
NSString*encodeUrlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
? ? 方式二:CFURLCreateStringByAddingPercentEscapes(有一個需要轉(zhuǎn)義的字符集,可以將所有需要轉(zhuǎn)義的字符轉(zhuǎn)義成百分數(shù))
NSString*encodeUrlStr=(__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(NULL,(__bridge CFStringRef)urlStr,CFSTR("!*'();:@&=+$,/?%#[]"),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
? ? 轉(zhuǎn)義URL一般會用在涉及加密解密的時候,因為正常的字符串加密之后就可能會出現(xiàn)&,+,#等等特殊的符號。