当我使用 swift 发布 json 时,如何解决 http 代码 412 和 200?
Posted
技术标签:
【中文标题】当我使用 swift 发布 json 时,如何解决 http 代码 412 和 200?【英文标题】:how to resolve http code 412 and 200 when I am posting json using swift? 【发布时间】:2017-10-04 09:55:17 【问题描述】:我正在尝试使用 swift (Alamofire
) 向本地主机中的 json 文件发送一个非常简单的字典
这是我所做的:
let parameters: Parameters = ["name" : "Danial"]
Alamofire.request("http://localhost/testing.json", method: HTTPMethod.post, parameters: parameters).response result in
if result.response?.statusCode != nil
if let status = (result.response?.statusCode)! as? Int
print("status : \(status)")
在我的 testing.json 中,我有以下内容:
"x":"y"
而且我很少得到 http 状态 412(经常)和 200(没有在 json 文件中出现新的 json)。我对这个网络东西很陌生。因此,请不要攻击我的问题,好像我必须知道这个简单的事情。这已经花了我 2 天的时间来解决,但我在这里:| 顺便说一句,连接应该没有错误,因为我的 get 协议似乎工作正常
【问题讨论】:
“在 json 文件中没有出现新的 json”是什么意思?您收到成功响应但没有检索到数据?当您将数据作为 API 提供时,最佳实践也是使用 get(而不是 post),但这并不重要。 您需要了解什么是错误 HTTP 412、它的含义以及为什么会出现此错误。它可能与您的服务器部分、您错误返回的错误等完全相关。 @DamienBannerot 我的意思是虽然看起来http是成功的(200)但我试图发布的内容仍然不会出现在json文件中,这意味着文件根本不会改变. 哦,这确实是一个帖子,那么请不要介意我的第一条评论。正如 Jeffery 提到的,您请求的是 json 文件而不是 web 服务,您是否创建了服务器路径并处理 json 编辑? 【参考方案1】:好的,我看到了一些东西。
当您向服务器发送 POST 时,URL 必须指向 Web 服务或某种类型的 Web 应用程序。在这里,您似乎正在尝试发布到资源文件。静态资源文件不会自动更新。
你没有指定编码,所以你没有发布 JSON (application/json),你发布了 Form URL Encoded (application/x-www-form-urlencoded)。您发送的不是 "name": "Danial"
,而是name=Danial
。
您需要将编码设置为 JSON。
let parameters: Parameters = ["name" : "Danial"]
Alamofire.request("http://localhost/testing.json",
method: HTTPMethod.post,
parameters: parameters,
encoding: JSONEncoding.default).response result in
if result.response?.statusCode != nil
if let status = (result.response?.statusCode)! as? Int
print("status : \(status)")
【讨论】:
以上是关于当我使用 swift 发布 json 时,如何解决 http 代码 412 和 200?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 5 中使用 Alamofire 解析 json
如何使用 AlamoFire 和 Swift 将 JSON 数据放入 UILabel
如何使用 Alamofire 在 Xcode 8 Swift 3.0 中获取特定的 JSON?