Swift URL appendPathComponent替换?与%3F

时间:2017-04-26 20:24:34

标签: swift

我有一个包含行

的路由器
var url = URL(string: MyRouter.baseURLString)!

url.appendPathComponent(relativePath)

这取代了"?"用"%3F"哪个被API服务器拒绝。我怎样才能解决这个问题?编码该字符是错误的。

1 个答案:

答案 0 :(得分:11)

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

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

let url = urlComponents.url!