2017-10-04 27 views
0

我想发出一个非常简单的字典,以JSON文件在我的本地主机使用SWIFT(Alamofire) 这里是我做了什么:当我使用swift发布json时,如何解析http代码412和200?

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协议似乎工作正常

+0

你是什么意思的“没有在json文件中新的json的外观”?您获得成功响应但没有检索到数据?将数据作为API提供的最佳做法是使用get(不是post),但这并不重要。 –

+0

您需要了解什么是错误HTTP 412,这意味着什么,以及为什么得到它。它可能与您的服务器部分完全相关,您错误地返回的错误等。 – Larme

+0

@DamienBannerot我的意思是说,尽管看起来http已成功(200),但仍然是我尝试发布的内容出现在json文件中,意思是文件根本不会改变。 –

回答

2

好的,这里是我看到的一些事情。

  1. 当您向服务器发送POST时,该URL必须是某种Web服务或某种Web应用程序。这里看起来你正在尝试POST到一个资源文件。静态资源文件不会自动更新。

  2. 您没有指定编码,因此您没有发布JSON(application/json),您发布了表单URL编码(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)") 
     } 
    } 
}