Swift URLComponents 无法正确转换空格
Swift URLComponents not converting empty spaces correctly
我在 Swift 4 中有一个非常简单的 GET 请求,使用 URLSession
作为 dataTask
,使用 URLComponents
创建 URL/String。
我遇到的问题如下面的代码片段所示
var url = URLComponents(string: "http://myServer.com:8086/query")
url?.queryItems = [
URLQueryItem(name: "db", value: "Database"),
URLQueryItem(name: "q", value: ("SELECT valueOne,valueTwo FROM \"TABLE\" WHERE \"valueOne\"='\(currValue)' ORDER BY time DESC LIMIT 1"))
]
NSLog((url?.url?.absoluteString)!)
/*
NSLog: http://myServer.com:8086/query?db=Database&q=SELECT2alueOne,valueTwo
0.000000ROM222TABLE220WHERE222valueOne23D'currValue'
0RDER2Y 0me -8ESC2MIT2
*/
我尝试直接构建 URL
并在字符串的查询部分应用 addingPercentEncoding
和 urlQueryAllowed
,但我仍然得到相同的结果。唯一部分起作用的是用“+”替换查询中的空格,但转义倒逗号仍然存在问题。
我对 Swift 很陌生,所以我的假设是我遗漏了一些非常明显的东西。任何和所有帮助将不胜感激。
我创建了这个函数来生成 URL。您可以使用此函数创建具有安全 ASCII 字符的 URL。
func urlGenretor() -> URL{
var components = URLComponents()
components.scheme = "https"
components.host = "myServer.com:8086"
components.path = "/query"
let database = URLQueryItem(name: "db", value: "Database")
let queryItem2 = URLQueryItem(name: "q", value: ("SELECT valueOne,valueTwo FROM \"TABLE\" WHERE \"valueOne\"='\(currValue)' ORDER BY time DESC LIMIT 1"))
components.queryItems = [database,queryItem2]
let url = components.url
print(url!)
return url!
所以答案是 NSLog
没有正确打印出百分比转义字符串,另一方面 print
可以。最好的办法是在 NSLog
行上设置断点并检查 url 值是否正确,确实如此。
我在 Swift 4 中有一个非常简单的 GET 请求,使用 URLSession
作为 dataTask
,使用 URLComponents
创建 URL/String。
我遇到的问题如下面的代码片段所示
var url = URLComponents(string: "http://myServer.com:8086/query")
url?.queryItems = [
URLQueryItem(name: "db", value: "Database"),
URLQueryItem(name: "q", value: ("SELECT valueOne,valueTwo FROM \"TABLE\" WHERE \"valueOne\"='\(currValue)' ORDER BY time DESC LIMIT 1"))
]
NSLog((url?.url?.absoluteString)!)
/*
NSLog: http://myServer.com:8086/query?db=Database&q=SELECT2alueOne,valueTwo
0.000000ROM222TABLE220WHERE222valueOne23D'currValue'
0RDER2Y 0me -8ESC2MIT2
*/
我尝试直接构建 URL
并在字符串的查询部分应用 addingPercentEncoding
和 urlQueryAllowed
,但我仍然得到相同的结果。唯一部分起作用的是用“+”替换查询中的空格,但转义倒逗号仍然存在问题。
我对 Swift 很陌生,所以我的假设是我遗漏了一些非常明显的东西。任何和所有帮助将不胜感激。
我创建了这个函数来生成 URL。您可以使用此函数创建具有安全 ASCII 字符的 URL。
func urlGenretor() -> URL{
var components = URLComponents()
components.scheme = "https"
components.host = "myServer.com:8086"
components.path = "/query"
let database = URLQueryItem(name: "db", value: "Database")
let queryItem2 = URLQueryItem(name: "q", value: ("SELECT valueOne,valueTwo FROM \"TABLE\" WHERE \"valueOne\"='\(currValue)' ORDER BY time DESC LIMIT 1"))
components.queryItems = [database,queryItem2]
let url = components.url
print(url!)
return url!
所以答案是 NSLog
没有正确打印出百分比转义字符串,另一方面 print
可以。最好的办法是在 NSLog
行上设置断点并检查 url 值是否正确,确实如此。