带有 åäö(特殊字符)的 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 使用特定的字符集?

URL 中是不是允许扩展 ASCII 字符 [äöå]?

MacOS wc(wordcount)计算带有UTF-8字符Å的错误单词

ASP.Net mvc5 我的网站不允许'åäö'

在 C++ 中对字符串数组进行排序,无论是“A”还是“a”以及 å、ä ö?

(问号) 而不是旧页面上的ÅÄÖ