2017-10-04 23 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)") 
     } 
    } 
}