我有一个URL
,它使用这样的String
:
https://test@api.search?query=\(productSearchString)&limit=1
现在我的问题是,这适用于例如"iphone“,但它与"iphone 12”崩溃。我试过这样编码:
guard let escapedResourceString = resourceString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return }
但在我的情况下,这似乎不起作用,因为它返回了一个不正确的URL
,我无法在我的API中使用。
我如何解决这个问题,这样用户就可以输入他想要的任何内容,但是应该创建URL
,并且我的API应该能够使用它。
如果你还需要什么就告诉我。
发布于 2021-02-13 03:34:04
您的参数需要进行url编码。
可以使用URLComponents创建URL
,并将参数作为URLQueryItem
实例传递,如下所示:
let productSearchString = "iphone 12"
var urlComponents = URLComponents(string: "https://test@api.search")
urlComponents?.queryItems = [
URLQueryItem(name: "query", value: productSearchString),
URLQueryItem(name: "limit", value: "1")
]
let url = urlComponents?.url
print(url?.absoluteString ?? "nil") // https://test@api.search?query=iphone%2012&limit=1
https://stackoverflow.com/questions/66184467
复制相似问题