如何使用 Alamofire 使用以下参数进行 API 调用(Mashape)?
How to make an API call(Mashape) with the below parameters using Alamofire?
我正在 Swift 3 中为 iOS 构建一个小应用程序,我正在使用的 api 获取应用程序的数据有一个 cURL 请求。
API的cURL请求如下:
// curl -X POST --include 'https://myApi.mashape.com/' \
// -H 'X-Mashape-Key:APIKEY' \
// -H 'Content-Type: application/json' \
// -H 'Accept: application/json' \
// --data-binary '{"parameter1":"value","parameter2":"value"}'
使用 Swift 和 Alamofire,这是我使用 POST 方法进行的 api 调用以获取数据。
func networkFunction(completed: @escaping DownloadComplete) {
let headers: HTTPHeaders = [
"X-Mashape-Key":"APIKEY",
"Content-Type":"application/json",
"Accept": "application/json"
]
let parameters: Parameters = [
"parameter1" : "value",
"parameter2" : "value"
]
Alamofire.request("https://myApi.mashape.com",method: .post,parameters: parameters, headers: headers).responseJSON
{ response in
print("Request: \(String(describing: response.request))") // original url request
print("Response: \(String(describing: response.response))") // http url response
print("Result: \(response.result)")
let result = response.result
print(response.description)
if let dict = result.value as? Dictionary<String , AnyObject> {
if let parameter1 = dict["parameter1"] as? String {
self._parameter1= parameter1
}
if letparameter2 = dict["parameter2"] as? String {
self._parameter2 = parameter2
print(parameter2)
}
}
completed()
}
}
当我执行上述操作时,我在控制台中收到错误请求错误。
我试过更改函数调用,但结果是一样的。上面的 API 调用出了什么问题?
编辑:我在下面的答案中添加了解决方案。
替换代码中的那一行..
Alamofire.request(URLRequest(url: URL(string:"https://myApi.mashape.com")!),method: .post,parameters: parameters, headers: headers).responseJSON
我发现错误源于以下事实:
- 参数的顺序不正确
- 我省略了添加 JSON 编码参数。
修改后的最终调用如下所示:
Alamofire.request("https://myAPI.mashape.com/beta",method: .post,parameters: parameters,encoding: JSONEncoding.default, headers: headers).responseJSON
{ response in
...
...
...
}
我正在 Swift 3 中为 iOS 构建一个小应用程序,我正在使用的 api 获取应用程序的数据有一个 cURL 请求。 API的cURL请求如下:
// curl -X POST --include 'https://myApi.mashape.com/' \
// -H 'X-Mashape-Key:APIKEY' \
// -H 'Content-Type: application/json' \
// -H 'Accept: application/json' \
// --data-binary '{"parameter1":"value","parameter2":"value"}'
使用 Swift 和 Alamofire,这是我使用 POST 方法进行的 api 调用以获取数据。
func networkFunction(completed: @escaping DownloadComplete) {
let headers: HTTPHeaders = [
"X-Mashape-Key":"APIKEY",
"Content-Type":"application/json",
"Accept": "application/json"
]
let parameters: Parameters = [
"parameter1" : "value",
"parameter2" : "value"
]
Alamofire.request("https://myApi.mashape.com",method: .post,parameters: parameters, headers: headers).responseJSON
{ response in
print("Request: \(String(describing: response.request))") // original url request
print("Response: \(String(describing: response.response))") // http url response
print("Result: \(response.result)")
let result = response.result
print(response.description)
if let dict = result.value as? Dictionary<String , AnyObject> {
if let parameter1 = dict["parameter1"] as? String {
self._parameter1= parameter1
}
if letparameter2 = dict["parameter2"] as? String {
self._parameter2 = parameter2
print(parameter2)
}
}
completed()
}
}
当我执行上述操作时,我在控制台中收到错误请求错误。 我试过更改函数调用,但结果是一样的。上面的 API 调用出了什么问题?
编辑:我在下面的答案中添加了解决方案。
替换代码中的那一行..
Alamofire.request(URLRequest(url: URL(string:"https://myApi.mashape.com")!),method: .post,parameters: parameters, headers: headers).responseJSON
我发现错误源于以下事实:
- 参数的顺序不正确
- 我省略了添加 JSON 编码参数。
修改后的最终调用如下所示:
Alamofire.request("https://myAPI.mashape.com/beta",method: .post,parameters: parameters,encoding: JSONEncoding.default, headers: headers).responseJSON
{ response in
...
...
...
}