解决AFNetworking封装baseUrl后接内容被忽略

解决AFNetworking封装baseUrl后接内容被忽略

作为iOS开发一年半的菜鸟级工程师,最近遇到一个问题突然就解决不了。

因为后台测试需要要求把baseUrl换掉,换掉本来没有什么问题,以为很容易的问题,因为前期封装好了啊,其实不然,我原本的baseURL是只有域名的(例:http://www.baidu.com),  但是新换的这个是在域名后面添加了路径。

一开始我以为是AFNetworking里面做了什么忽略,就开始研究源码,始终没找到原因,不知道他是怎么拼接会出来这种问题的,后来 终于看懂,在AFHTTPSessionManager中找到。是因为下面这段代码,


解决AFNetworking封装baseUrl后接内容被忽略_第1张图片

[NSURL URLWithString:URLString relativeToURL:self.baseURL]  就是它!!!

因为URLWithString  relativeToURL :  方法会自动省略掉后面的内容。。

 解决办法就是 

在baseURL后拼接一个空字符串,即可解决这个问题,如果baseURL本身结尾带“/”,则空字符串不产生作用;如果baseURL结尾没有“/”,则拼接完成后会在baseURL上加入“/”。

如果这时再执行URLWithString  relativeTOURL:就不会去掉任何字段了

并且注意baseURL 后接URL 不要有“/”   !!!


解决AFNetworking封装baseUrl后接内容被忽略_第2张图片



同时感谢作者:OneCoinMan!!!

你可能感兴趣的:(解决AFNetworking封装baseUrl后接内容被忽略)