NSURLComponents 中的 %2C 变为 %2525252C - swift
%2C in NSURLComponents turns to %2525252C - swift
我正在使用 NSURLComponents 为 Swift 中的 API 调用生成 URL:
func generateSearchByLocaleURL(lat: Int, lon: Int) -> String {
var components = NSURLComponents()
let bbox = generateBboxValue(lat, lon)
components.scheme = "https"
components.host = "api.flickr.com"
components.path = "/services/rest/"
components.queryItems = [
NSURLQueryItem(name: "method", value: "flickr.photos.search"),
NSURLQueryItem(name: "api_key", value: "KEY_VALUE"),
NSURLQueryItem(name: "bbox", value: bbox),
NSURLQueryItem(name: "extras", value: "url_m"),
NSURLQueryItem(name: "format", value: "json"),
NSURLQueryItem(name: "nojsoncallback", value: "1")
]
let url = components.string
return url!
}
我有一个辅助方法来确定要在 NSURLQueryItem 对象之一中使用的字符串,该方法基于屏幕上名为 generateBboxValue():
的两个文本字段的输入
func generateBboxValue(lat: Int, lon: Int) -> String {
let lat1 = lat - 1
let lat2 = lat + 1
let lon1 = lon - 1
let lon2 = lon + 1
let bbox = "\(lat1)&2C"+"\(lat2)%2C"+"\(lon1)%2C"+"\(lon2)"
return bbox
}
generateSearchByLocaleURL(20, 25)
如您所见,字符串中有一个逗号 (,),当它输入到 NSURL 组件时,我需要将其生成到 %2C。但是,当我从 NSURLComponents.string 打印 returning 字符串时,我得到:
"https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=KEY_VALUE&bbox=19%262C21%252C24%252C26&extras=url_m&format=json&nojsoncallback=1"
如果您注意到 'bbox' key/value 部分是 returning:
bbox=19%262C21%252C24%252C26
如何在这种情况下 return 仅 %2C?这使我无法成功拨打任何 API 电话,而且我正在用头撞墙。
谢谢!
只需执行 let bbox = "\(lat1),\(lat2),\(lon1),\(lon2)"
,然后当它变成 URL 时,逗号将转换为 %2C。我删除了 +
因为你根本不需要它,你可以将它们串成一串。
我正在使用 NSURLComponents 为 Swift 中的 API 调用生成 URL:
func generateSearchByLocaleURL(lat: Int, lon: Int) -> String {
var components = NSURLComponents()
let bbox = generateBboxValue(lat, lon)
components.scheme = "https"
components.host = "api.flickr.com"
components.path = "/services/rest/"
components.queryItems = [
NSURLQueryItem(name: "method", value: "flickr.photos.search"),
NSURLQueryItem(name: "api_key", value: "KEY_VALUE"),
NSURLQueryItem(name: "bbox", value: bbox),
NSURLQueryItem(name: "extras", value: "url_m"),
NSURLQueryItem(name: "format", value: "json"),
NSURLQueryItem(name: "nojsoncallback", value: "1")
]
let url = components.string
return url!
}
我有一个辅助方法来确定要在 NSURLQueryItem 对象之一中使用的字符串,该方法基于屏幕上名为 generateBboxValue():
的两个文本字段的输入func generateBboxValue(lat: Int, lon: Int) -> String {
let lat1 = lat - 1
let lat2 = lat + 1
let lon1 = lon - 1
let lon2 = lon + 1
let bbox = "\(lat1)&2C"+"\(lat2)%2C"+"\(lon1)%2C"+"\(lon2)"
return bbox
}
generateSearchByLocaleURL(20, 25)
如您所见,字符串中有一个逗号 (,),当它输入到 NSURL 组件时,我需要将其生成到 %2C。但是,当我从 NSURLComponents.string 打印 returning 字符串时,我得到:
"https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=KEY_VALUE&bbox=19%262C21%252C24%252C26&extras=url_m&format=json&nojsoncallback=1"
如果您注意到 'bbox' key/value 部分是 returning:
bbox=19%262C21%252C24%252C26
如何在这种情况下 return 仅 %2C?这使我无法成功拨打任何 API 电话,而且我正在用头撞墙。
谢谢!
只需执行 let bbox = "\(lat1),\(lat2),\(lon1),\(lon2)"
,然后当它变成 URL 时,逗号将转换为 %2C。我删除了 +
因为你根本不需要它,你可以将它们串成一串。