在发起网络请求时可能会需要对URLString进行编码

157 阅读1分钟

背景是今天一个小妹妹问我说:https你会吗?我要用https的接口请求数据,博主一听,https?上一次刚好用过,但是最后没有证书验证,所以一直很遗憾,当听到时乐坏了,果断说会啊,然后兴高采烈的拿到了小姑娘发的接口和cer证书,点击接口网页打开,看到了json数据。。。。。。。此处沉默三秒种,然后使用AF3.0来请求数据,然后。。。。。。此处沉默一分钟,你猜的没错,都能拿到数据,难道我搞错了?不科学啊,我还没用证书呢。跟小姑娘一说,小姑娘说用的AF2.0,可是也没啥区别啊,行吧,我换AF2.0,结果怎么样,大家已经清楚了。没错,虽然是https的接口,但是没有做接口的握手的SSL认证,所以跟http的接口没啥区别。
但是为什么小姑娘请求不到数据呢?好吧,发个控制台报错截图看看,
这里写图片描述
看出来了吧,因为URLString可能存在某些字符需要转码,遂

    NSString *URLEncoding = [URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  //转码成UTF-8  否则可能会出现错误

然后数据出来了,好神奇啊。
初学者在请求数据时要注意啦,如果你们的接口含有汉字或者某些特殊字符时,需要转码UTF-8,否则是不符合http或者https接口规范的。