如何使用 Alamofire 使用以下参数进行 API 调用(Mashape)?

问题描述 投票:0回答:2

我正在使用 Swift 3 for 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 调用出了什么问题?

编辑:我已在下面的答案中添加了解决方案。

ios swift alamofire mashape
2个回答
0
投票

替换代码中的该行..

Alamofire.request(URLRequest(url: URL(string:"https://myApi.mashape.com")!),method: .post,parameters: parameters, headers: headers).responseJSON

0
投票

我发现错误源于以下事实:

  1. 参数顺序不正确
  2. 我省略了添加 JSON Encoding 参数。

经过更改的最终调用如下所示:

Alamofire.request("https://myAPI.mashape.com/beta",method: .post,parameters: parameters,encoding: JSONEncoding.default, headers: headers).responseJSON
        { response in
          ...
          ...
          ...
        }
© www.soinside.com 2019 - 2024. All rights reserved.