带有 åäö(特殊字符)的 Alamofire GET 请求,无效 url
Posted
技术标签:
【中文标题】带有 åäö(特殊字符)的 Alamofire GET 请求,无效 url【英文标题】:Alamofire GET request with åäö (special characters), invalid url 【发布时间】:2021-01-09 21:38:52 【问题描述】:我正在尝试使用 alamofire 发送 API 获取请求,但是当我使用以下 url:https://stuntmans.evosale.se/admin/api/dräkt 时,“dräkt”中的特殊字符将返回无效的 url 作为响应。我将如何在 alamofire 中使用特殊字符?
提前致谢!
下面是部分代码:
let headers: HTTPHeaders = [
.authorization(username: "Username", password: "Password"),
.accept("application/json")]
AF.request(https://stuntmans.evosale.se/admin/api/dräkt, headers: headers).validate().responseJSON response in
【问题讨论】:
【参考方案1】:您可以使用 URLComponents
对 URL 进行百分比编码
var components = URLComponents(string: "https://stuntmans.evosale.se")!
components.path = "/admin/api/dräkt"
guard let url = components.url else return
AF.request(url, headers: headers).validate().responseJSON response in
【讨论】:
谢谢!有没有办法在不拆分网址的情况下做到这一点? @vadian 嘿!我实际上设法找到了解决方案,解决方案是将字符串中的“åäö”替换为相应的编码或调用它。这是代码: var result = Url zip(["å", "ä", "ö"],["%C3%A5", "%C3%A4", "%C3%B6"]).forEach result = result.replacingOccurrences(of: $0, with: $1, options: .literal) 【参考方案2】:通过将字符“åäö”替换为它们应该在 url 中表示的相应字符来解决此问题,下面是代码:
var result = Url
zip(["å", "ä", "ö"],["%C3%A5", "%C3%A4", "%C3%B6"]).forEach
result = result.replacingOccurrences(of: $0, with: $1, options: .literal)
print (result) // the result
【讨论】:
以上是关于带有 åäö(特殊字符)的 Alamofire GET 请求,无效 url的主要内容,如果未能解决你的问题,请参考以下文章
字符 Å Ä Ö 没有显示在我的 DDL 中,我如何告诉 restclient 使用特定的字符集?
MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词