解决AFNetworking封装baseUrl后接内容被忽略
作为iOS开发一年半的菜鸟级工程师,最近遇到一个问题突然就解决不了。
因为后台测试需要要求把baseUrl换掉,换掉本来没有什么问题,以为很容易的问题,因为前期封装好了啊,其实不然,我原本的baseURL是只有域名的(例:http://www.baidu.com), 但是新换的这个是在域名后面添加了路径。
一开始我以为是AFNetworking里面做了什么忽略,就开始研究源码,始终没找到原因,不知道他是怎么拼接会出来这种问题的,后来 终于看懂,在AFHTTPSessionManager中找到。是因为下面这段代码,
[NSURL URLWithString:URLString relativeToURL:self.baseURL] 就是它!!!
因为URLWithString relativeToURL : 方法会自动省略掉后面的内容。。
解决办法就是
在baseURL后拼接一个空字符串,即可解决这个问题,如果baseURL本身结尾带“/”,则空字符串不产生作用;如果baseURL结尾没有“/”,则拼接完成后会在baseURL上加入“/”。
如果这时再执行URLWithString relativeTOURL:就不会去掉任何字段了
并且注意baseURL 后接URL 不要有“/” !!!
同时感谢简书作者:OneCoinMan!!!
网友评论