有人可以帮助我吗?
let url = "\(urlAIString)/Url-Space/position=[\(userLocation)]"
AF.request(url,method: .get){
....
}
我希望将括号传递到服务器而不进行编码。但是,我遇到了不便,因为括号是用 Base64 编码并交付的
我希望将括号传送到服务器而不进行编码。
这不是 URL,因此您使用的协议不是 HTTP。回到RFC 1738,规范很清楚:
因此,只有字母数字、特殊字符“$-_.+!*'(),”和 可以使用保留字符用于其保留目的 URL 中未编码。
虽然您(以及您使用的服务)可以自由定义一些看起来很像 HTTP 的非 HTTP 协议,但也支持非 URL 的类似 GET 的请求,但这不是协议 URLSession(Almofire 所依赖的)支持。您可以构建自己的网络传输来与此服务交互。一般来说,您需要在 Network 框架之类的框架之上构建它。这通常是一项很好的工作,因此通常更容易让您的服务使用 HTTP 等标准协议和正确编码的 URL,而不是发明您所描述的自定义协议。
如果您确实构建了自定义协议来与此服务通信,请查看NWProtocolTLS。如果您的服务与 HTTP/1.0 非常相似,并且您不使用任何高级功能,那么在 TLS 连接之上从头开始构建它并不困难。 (TLS 的实现需要大量工作,因此让系统为您完成这项工作。)简单的 HTTP 可以手动编写和解析。
但我建议修复您的服务器。通常更容易。