现在我正在使用参数发出 Alamofire 请求。在发出请求之前我需要最终 URL,因为我需要散列最终 URL 并将其添加到请求标头中。我就是这样做的,但它没有给我最终的 URL 来散列并放入标题中。
Alamofire.request(url, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON
Run Code Online (Sandbox Code Playgroud)
我想在发出此请求之前获取编码的 URL,因此请求如下所示
Alamofire.request(url, method: .get, headers: headers).responseJSON
Run Code Online (Sandbox Code Playgroud)
现在作为一种解决方法,我通过手动附加每个参数来手动创建 URL。有没有更好的方法来做到这一点?
let rexUrl = "https://www.google.com"
let requestPath = "/accounts"
let url = rexUrl + requestPath + "?apikey=\(apiKey)&market=USD&quantity=\(amount)&rate=\(price)&nonce=\(Date().timeIntervalSince1970)"
Run Code Online (Sandbox Code Playgroud)
您可以使用URLComponents轻松添加 URL 参数等,而不是“手动”编写自己的 URL 。
这是使用上面的 URL 的示例:
var apiKey = "key-goes-here"
var amount = 10
var price = 20
var urlParameters = URLComponents(string: "https://google.com/")!
urlParameters.path = "/accounts"
urlParameters.queryItems = [
URLQueryItem(name: "apiKey", value: apiKey),
URLQueryItem(name: "market", value: "USD"),
URLQueryItem(name: "quantity", value: "\(amount)"),
URLQueryItem(name: "rate", value: "\(price)"),
URLQueryItem(name: "nonce", value: "\(Date().timeIntervalSince1970)")
]
urlParameters.url //Gives you a URL with the value https://google.com/accounts?apiKey=key-goes-here&market=USD&quantity=10&rate=20&nonce=1513630030.43938
Run Code Online (Sandbox Code Playgroud)
当然,它并没有让您的生活变得更轻松,因为您仍然需要URL自己编写代码,但至少您不必再为添加&和?以正确的顺序而苦苦挣扎了。
希望能帮到你。
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |