gpt4 book ai didi

ios - 将过滤器 "Less-than or equal"应用于 URL

转载 作者:行者123 更新时间:2023-11-28 09:50:07 30 4
gpt4 key购买 nike

我今天遇到了一个恼人的问题。我正在做一个查询自制 API 并解析答案的应用程序,一个非常经典的应用程序。

但是由于我收到的数据量很大,我想对我的请求应用过滤器“<=”和“>=”,但它不起作用。生成的 URL 对象是 nil .

代码如下:

print(request.url)      // prints the expected URL
var uerel = URL(string: request.url)
print(uerel) // prints 'nil'

输出:

https://XXXXXXX.eu/YYYYYY?my_filter_id=5b057e27443318329d694d64&date>=2016-01-01T08:00:00.000Z&date<=2016-01-01T20:00:00.000Z
nil

有趣的是,如果我删除 <> ,它就像一个魅力。我试图在 official doc for URL object 中搜索但它似乎不需要特殊编码.. ?

我还查看了上述官方文档中提到的 RFC 1808,这些特殊字符标记为 punctuation所以我认为将它们放在 URL 中是可以的。

问题从何而来?

最佳答案

您需要对该网址进行编码,因为 <>符号在 URL 中无效.

let unencodedUrlString = "https://XXXXXXX.eu/YYYYYY?my_filter_id=5b057e27443318329d694d64&date>=2016-01-01T08:00:00.000Z&date<=2016-01-01T20:00:00.000Z"
guard let encodedUrlString = unencodedUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedUrlString) else { return }

编码后的 URL 将不包含 <>符号如您所见:

https://XXXXXXX.eu/YYYYYY?my_filter_id=5b057e27443318329d694d64&date%3E=2016-01-01T08:00:00.000Z&date%3C=2016-01-01T20:00:00.000Z

关于ios - 将过滤器 "Less-than or equal"应用于 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506721/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com