我有一个包含行
的路由器var url = URL(string: MyRouter.baseURLString)!
url.appendPathComponent(relativePath)
这取代了"?"用"%3F"哪个被API服务器拒绝。我怎样才能解决这个问题?编码该字符是错误的。
答案 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!