当我使用 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?

如何在swift中将json数组保存和检索到用户默认值?

如何设置下载数据的时间限制(来自json数据库)Swift 2

如何在swift中解压缩带有密码的json文件?