美文网首页
iOS NSURL拼接,最后一个斜杠后内容被吃掉

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

作者: revon | 来源:发表于2017-11-07 21:30 被阅读61次

    创建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的内容。貌似,安卓也有类似的问题哦!!!

    相关文章

      网友评论

          本文标题:iOS NSURL拼接,最后一个斜杠后内容被吃掉

          本文链接:https://www.haomeiwen.com/subject/fqrsmxtx.html