当前位置:  开发笔记 > 运维 > 正文

无法在URL + swift中编码Plus字符

如何解决《无法在URL+swift中编码Plus字符》经验,为你挑选了1个好方法。

我正在使用GET方法,我必须在URL中传递电子邮件地址.API期望它被编码.我试过编码选项,但'+'字符无法编码.

我尝试使用以下代码

let encodedEmail = emailAddressTxt.text!.addingPercentEncoding(withAllowedCharacters:.urlHostAllowed)

let urlString = "http://www.example.com/User/GetUserDetailsByEmailAddress?EmailAddress=\(encodedEmail!)"

print(escapedString)

它打印http://www.example.com/User/GetUserDetailsByEmailAddress?EmailAddress=mano+1%40gmail.com

其中'@'字符仅被编码而'+'未被编码.



1> OOPer..:

不幸的是,CharacterSet.urlHostAllowedCharacterSet.urlQueryAllowed包含+允许.由于历史原因,大多数Web服务器都将其+视为whitespace(), so you need to escape +.

为此,您可能需要定义自己的CharacterSet:

extension CharacterSet {
    static let rfc3986Unreserved = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~")
}

let emailAddressText = "mano+1@gmail.com"

let encodedEmail = emailAddressText.addingPercentEncoding(withAllowedCharacters:.rfc3986Unreserved)

print(encodedEmail!) //->mano%2B1%40gmail.com

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有