【问题标题】:Swift 4 error when POST data via HTTP通过 HTTP POST 数据时出现 Swift 4 错误
【发布时间】:2018-06-24 10:20:33
【问题描述】:

我在使用 API 向服务器发送 complain 数据时遇到问题。 我的发送功能。结果我得到了 404 错误(下面的截图)

func complain(jsonData: [String: Any], token: String) {

    print(token)
    request(complainURL, method: .post, parameters: jsonData, encoding: JSONEncoding.default, headers: ["Authorization": "Bearer \(token)"])
        .responseString {(response) in
            switch response.result {
            case .success(let data):
                if let error = JSON(data)["errors"].string {
                    self.delegate?.failureRequest(error: JSON(error).dictionaryObject!)
                } else {
                    self.delegate?.updateRequest(rosemaryJSON: JSON(jsonData), byState: .complain)
                }

            case .failure(let error):
                print("FAIL: \(error.localizedDescription)")
            }
    }
}

我的 JsonData

 let param: [String: Any] = [
            "details": "\(AlertTextField!.text!)",
            "subject": "Complain",
            "client_id": (EVTUser.user?.id!)!
        ]

【问题讨论】:

  • 很多事情取决于您的服务器端,但是当请求 URL 中的路径错误时,通常服务器会返回 404(表示未找到)。您是否 100% 确定代码中的 url 是正确的?您是否以其他方式(例如使用 Postman)对其进行了测试?
  • @OOPer 是正确的...我使用 Alamofire 更改了我的发送功能,现在我没有错误但参数仍然没有到达
  • 请将 Alamofire 代码添加到您的问题中,并准确描述 params still don't come 的含义。这些可能是检查服务器端行为的一些线索。但最好检查服务器端代码或服务器日志。
  • @OOPer 我更新了我的代码
  • @OOPer 它现在可以工作了,我会再写一篇文章让人们描述我如何解决这个问题..

标签: swift api http http-post


【解决方案1】:

我的 ORIGINAL 代码是...

func complain(jsonData: [String: Any], token: String) {

print(token)
request(complainURL, method: .post, parameters: jsonData, encoding: JSONEncoding.default, headers: ["Authorization": "Bearer \(token)"])
    .responseJSON {(response) in
        switch response.result {
        case .success(let data):
            if let error = JSON(data)["errors"].string {
                self.delegate?.failureRequest(error: JSON(error).dictionaryObject!)
            } else {
                self.delegate?.updateRequest(rosemaryJSON: JSON(jsonData), byState: .complain)
            }

        case .failure(let error):
            print("FAIL: \(error.localizedDescription)")
        }
}
}

我只需将 responseJSON 更改为 responseString 即可!我成功了。。 希望它会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多