iOS NSURL拼接,最后一个斜杠后内容被吃掉

创建URL,有这样一个方法

URLWithString:(NSString *)URLString relativeToURL:(nullable NSURL *)baseURL

AFN里边就是用的这个方法来拼接URL,如果类似这样

    NSURL *url = [NSURL URLWithString:@"http://192.168.0.0/api/apk"];
    NSURL *newUrl = [NSURL URLWithString:@"/user/login" relativeToURL:url];

那么恭喜你,结果就是这样 http://192.168.0.0/user/login(/api/apk都没有了哦)
如果是这样

    NSURL *url = [NSURL URLWithString:@"http://192.168.0.0/api/apk"];
    NSURL *newUrl = [NSURL URLWithString:@"user/login" relativeToURL:url];

那么结果就是这样 http://192.168.0.0/api/user/loing
注意看上边写法的区别
结果都不是自己想要的,一个是吃掉了斜杠后的所有,一个是吃掉 了最后一个斜杠后的内容
解决方法如下

    NSURL *url = [NSURL URLWithString:@"http://192.168.0.0/api/apk"];
    url = [url URLByAppendingPathComponent:@""];
    NSURL *newUrl = [NSURL URLWithString:@"user/login" relativeToURL:url];

结果当然就是很完美的拼接
注意,注意,注意
[NSURL URLWithString:@"user/login" relativeToURL:url]这个方法的string参数,如果你又加了一个斜杠,类似这样[NSURL URLWithString:@"/user/login" relativeToURL:url],那么恭喜你,relativeToURL中的url斜杠后的东西,全部被吃掉了。
神奇的地方,就是拼接的string中,前边不要有斜杠,如果有斜杠,就会默认的处理掉url斜杠后的内容。而拼接一个空的字符串,系统就会自动加上一个斜杠来拼接string的内容。貌似,安卓也有类似的问题哦!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,705评论 2 7
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,419评论 0 6
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,444评论 2 4
  • 我结婚刚一年多,和老公基本算合得来,就是关于去他家的问题上总是吵架,吵架的点就是:只要一休息,他就这一句:去...
    2988e1b99fff阅读 1,869评论 0 0