Swift URL appendPathComponent 替换 ?与 %3F

标签 swift

我有一个包含线路的路由器

var url = URL(string: MyRouter.baseURLString)!

url.appendPathComponent(relativePath)

这取代了“?”带有被 API 服务器拒绝的“%3F”。我怎样才能解决这个问题?对该字符进行编码是错误的。

最佳答案

因为 ? 不是路径的一部分。它是一个分隔符,表示查询字符串的开头。您可以在 this article 中了解 URL 的不同组成部分。 .每个组件都有其一组有效字符,任何不在该组中的都需要进行百分比转义。最好的选择是使用 URLComponents 自动为您处理转义:

var urlComponents = URLComponents(string: MyRouter.baseURLString)!
urlComponents.queryItems = [
    URLQueryItem(name: "username", value: "jsmith"),
    URLQueryItem(name: "password", value: "password")
]

let url = urlComponents.url!

关于Swift URL appendPathComponent 替换 ?与 %3F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643879/

相关文章:

swift - 以未经身份验证的用户身份下载 JSON 文件 AWS/S3/Cognito

swift - @IBDesignable - @IBInspectable,类不符合键值编码

ios - 使用 RxDatasources 实现多个部分

ios - 当我在 Xcode 中运行应用程序时,按钮字体与 Storyboard字体不匹配

ios - 在我的 ScrollView 上显示 View

swift - 如何强制位于 UITextView 垂直边界之外的字形布局?

performance - Swift 处理数字真的很慢吗?

ios - 无法为 UITabBarController 设置自定义类

swift - 我在快速语言中混淆了结构和类

ios - 发布版本上的 Dyld 库未加载错误