【问题标题】:Cannot get the POST request to work AlamoFire and XCode/Swift无法让 POST 请求工作 AlamoFire 和 XCode/Swift
【发布时间】:2021-04-08 17:08:30
【问题描述】:

我正在使用 Swift 和 Xcode 并尝试发送 Post 请求。没有参数且没有方法声明的正常请求正在工作。但是,当我尝试使用参数执行特定的发布请求时,它不再起作用。我直接从 Alamofire 的文档中获取了逻辑。我在下面包含了一些图片和代码。

let parameters = ["barcdodeNumber": displayValue]
            
AF.request(url, method: .post, parameters: parameters)
//this is the right way, but it does not work
            
AF.request(url).response { response in
    debugPrint(response)
}
//this is wrong but it works

【问题讨论】:

  • 请提供更多信息。 “不起作用”是什么意思?你得到回应了吗?一个错误?见How to Ask
  • @Paulw11 所以基本上第一种方式 (AF.request(url, method: .post, parameters: parameters)) 没有成功地向我们的服务器发送请求。第二种方式确实向服务器发送请求,但它并不理想,因为它只允许我们添加一个参数而不是多个
  • 正如 Rob 指出的那样,您需要 .response - 您是否不小心在问题中忽略了这一点,或者您的真实代码中也缺少它?
  • @Paulw11 我的真实代码中也缺少它。我将尝试 Rob 发布的以下答案中的代码
  • 无关,但barcdodeNumber?也许你的意思是barcodeNumber

标签: ios swift post alamofire


【解决方案1】:

您需要调用response 方法之一,例如,

AF.request(url, method: .post, parameters: parameters).response { response in
    debugPrint(response)
}

这引出了关于端点返回什么的问题。通常是 JSON,因此您可以使用 responseJSON 或解码器格式之一。

【讨论】:

    【解决方案2】:

    最终,这就是最终正常工作的方式。

        AF.request(url, method: .post, parameters: params, encoding: 
        URLEncoding(destination: .queryString)).response { response in
                    debugPrint(response)
                }
    

    【讨论】:

    • 加入“encoding: URLEncoding(destination: .queryString)”有助于让一切正常工作。
    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2016-11-25
    • 2020-02-10
    • 1970-01-01
    • 2018-07-13
    • 2016-11-08
    • 2015-11-23
    • 2016-11-11
    相关资源
    最近更新 更多