美文网首页
iOS URL结构分析及注意事项

iOS URL结构分析及注意事项

作者: nuannuan_nuan | 来源:发表于2016-01-28 20:38 被阅读203次

    本文参考:IOS网络编请求响应之URL结构

    本文不仅针对URL结构进行了分析,而且对于对于url的一些编码的注意事项也给出了解决方法;

    在url规范中:":/?#[]@!¥&’()*+,;="等符号都是有特殊含义的,如果我们在进行get请求时,请求的参数中包含了这些特殊字符就会引起冲突,解决方法就是讲这些特殊的字符转换为“%+ASCII”形式,iOS中的CFURLCreateStringByAddingPercentEscapes函数就可以处理这个问题

    参考连接:URL 编码:CFURLCreateStringByAddingPercentEscapes

    扩展连接:

    对于iOS网络请求相关的了解可以参考下面相关连接:
    IOS项目开发之网络编程 - 随笔分类 - 人魔七七 - 博客园

    ######2017年12月更

    对于url的encode,iOS提供了两个API:

    API1:-(nullableNSString*)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encde(iOS9已废弃)

    API2:-(nullableNSString*)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet*)allowedCharacters

    API1中会对url中除了保留字外的其他字符都进行%+ASICC编码,比如

    https://www.xingshulin@xixing.com#mark?p1=hello world&p2=我是参数2&p3=query3

    上面用API1编码后输出:https://www.xingshulin@xixing.com%23mark?p1=hello%20world&p2=%E6%88%91%E6%98%AF%E5%8F%82%E6%95%B02&p3=query3

    用API2,如果使用URLQueryAllowedCharacterSet进行编码是一样的,但如果使用URLHostAllowedCharacterSet编码会输出:

    https%3A%2F%2Fwww.xingshulin%40xixing.com%23mark%3Fp1=hello%20world&p2=%E6%88%91%E6%98%AF%E5%8F%82%E6%95%B02&p3=query3

    可见,API2比API1的功能更强大。API2针对除了www.xingshulin之外的其他特俗字符都进行了编码。

    如果有时候我们不需要对某些特殊字符进行编码,比如上面的#mark,mark前的“#”,那么用API2也可以实现,通过customAllowedSet =  NSCharacterSet(charactersInString:"`%^{}\"[]|\\<> ").invertedSet,自定义characterSet可以实现。上面就保证了,会保留"`%^{}\"[]|\\<> "之外的特俗字符“#”,输出如下:www.xingshulin@xixing.com#mark?p1=hello%20world&p2=%E6%88%91%E6%98%AF%E5%8F%82%E6%95%B02&p3=query3

    参考:blog.csdn.net/andanlan/article/details/53368727

    相关文章

      网友评论

          本文标题:iOS URL结构分析及注意事项

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