我有一个包含线路的路由器
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/