swift - 如何对 URL 进行编码以在 Swift 中传递百分比 (%) 符号?

标签 swift url

我需要这样的 URL 才能工作:

https://somehost.gov/api/wtk_download.csv?api_key=DEMO_KEY&wkt=POINT(-104.23828125%252039.90973623454)&attributes=power&names=2009&interval=60&full_name=SampleUser&email=sample@email.com&affiliation=TestOrganization&reason=Dev

我用来生成 URL 的代码:

let wktStr: String = "POINT("+formattedX+"%"+formattedY+")"
var components = URLComponents()
components.scheme = "https"
components.host = "somehost.gov"
components.path = "/api/wtk_download.csv"
components.queryItems = [
    URLQueryItem(name: "api_key", value: "DEMO_KEY"),
    URLQueryItem(name: "wkt", value: wktStr),
    URLQueryItem(name: "attributes", value: "power"),
    URLQueryItem(name: "names", value: yearString),
    URLQueryItem(name: "interval", value: "60"),
    URLQueryItem(name: "full_name", value: "SampleUser"),
    URLQueryItem(name: "email", value: "sample@email.com"),
    URLQueryItem(name: "affiliation", value: "TestOrganization"),
    URLQueryItem(name: "reason", value: "Dev")

]

let url = components.url
print(url!)
print(url!.absoluteURL)

打印:

https://somehost.gov/api/wtk_download.csv?api_key=DEMO_KEY&wkt=POINT(-104.23828125%252039.90973623454)&attributes=power&names=2009&interval=60&full_name=SampleUser&email=sample@email.com&affiliation=TestOrganization&reason=Dev

服务器主机出错,因为 POINT(-104.23828125%252039.90973623454)%25 而不是只有 %

如何生成只有 % 的项目 POINT(-104.23828125%2039.90973623454)

最佳答案

看起来您正在尝试使用 Wind Toolkit Data API . (截至 2023 年 1 月的更新:这是撰写此问题时原始链接的样子:Wind Toolkit Data API)

在您写这个问题时,在他们的一个示例请求中,该页面有一个如下所示的查询参数:

wkt=POINT(-104.23828125%2039.90973623453719)

%20 实际上只是一个 URL-encoded空格字符。

(他们如何为 wkt 参数显示 URL 编码值,但对于值包含空格的其他参数,如 full_name =Sample Useraffiliation=Test Organization,所以混淆的来源是可以理解的。)

无论如何,要解决此问题,只需将 wktStr 中的 % 字符替换为空格即可:

let wktStr: String = "POINT("+formattedX+" "+formattedY+")"

关于swift - 如何对 URL 进行编码以在 Swift 中传递百分比 (%) 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61666596/

相关文章:

ios - 使用 Swift 请求用户在 App Store 上购买应用程序的日期

asp.net-mvc-3 - MVC3 URL 编码?

html - 禁止在图像 URLS 上使用 403

java - 使用 java : corrupted data 从 FTP 站点下载文件

Swift 通过按下 "Back"按钮将数据传输到第一个 View

swift - 围绕特定节点环绕 Scenekit 相机

swift - Alamofire 类型 'ParameterEncoding' 没有成员 'URL' Swift 3

swift - 类型不可转换为 'NativeObject'

jquery - 将 "&html5=1" append 到 YouTube 上的视频网址? (jQuery)

url - 如何忽略 iMacros 脚本中的 HTTP 错误?