2017-07-18 43 views
0
let dateFormatter1 : DateFormatter = DateFormatter() 
dateFormatter1.dateFormat = "dd/MMM/yyyy HH:mm:ss" 

let date1 = Date() 
let myString1 = dateFormatter1.string(from: date1) 

let data1 = myString1.data(using: .utf8) 

self.dateString1 = String(data: data1!, encoding: .utf8)! 

func postYumms() { 
    let delegate = UIApplication.shared.delegate as? AppDelegate 

    if let context = delegate?.persistentContainer.viewContext{ 
     let person = NSEntityDescription.insertNewObject(forEntityName: "Mydata", into: context) as! Mydata 
     let newString = self.timeString.replacingOccurrences(of: "", with: "/") 
     let dateescapedString = self.dateString.addingPercentEncoding(withAllowedCharacters:.urlHostAllowed) 
     let timeescapedString = newString.addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed) 
     print(timeescapedString!) 

     let joinString = dateescapedString! + "+" + newString 

     let parameters = "Post_id=\(self.ID)" + "&Post_type=\(self.PTYPE)" + "&Created_by=\(self.UID)" + "&Created_on=\(self.dateString1)" 
     print(parameters) 

     let url = "http://shiftu.org/api/zTimeline/post_like?" 

     let upara = url + parameters 

     print(upara) 

     Alamofire.request(upara, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in 
      switch(response.result) { 
      case .success(_): 
       if response.result.value != nil{ 
        print(response.result.value!) 
       } 
       break 

      case .failure(_): 
       print(response.result.error!) 
       break 
      } 
    } 
} 

它顯示像錯誤編碼的日期格式使用它以JSON在swift3

invalidURL("http://shiftu.org/api/zTimeline/post_like?Post_id=8172&Post_type=1&Created_by=3234&Created_on=18/Jul/2017 12:14:02"

請錯誤,有人幫我

+0

你爲什麼編碼的日期字符串作爲.utf8?這兩行對我來說似乎沒有必要:'let data1 = myString1.data(using:.utf8); self.dateString1 = String(data:data1 !,編碼:.utf8)!' –

回答

0

的問題是,您使用的是串使用URL中的空格表示URL作爲URL查詢參數,而不使用URL編碼字符串。 你實際上做了編碼,但是不要在任何地方使用編碼的字符串。

只是改變這一行應該解決您的問題:

let parameters = "Post_id=\(self.ID)" + "&Post_type=\(self.PTYPE)" + "&Created_by=\(self.UID)" + "&Created_on=\(joinString)"

+0

嗨大衛,我已經編輯了行,因爲你已經提到.Bu它我顯示如下的錯誤 http://shiftu.org/api/zTimeline/post_like?Post_id = 8172&Post_type = 1&Created_by = 3234&Created_on = 18%2FJul%2F2017 + 14:54:39 responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain = NSCocoaErrorDomain Code = 3840「Garbage at end。」) UserInfo = {NSDebugDescription =結束垃圾})) –

+0

看起來你的API正在返回一個無效的JSON響應。如果您使用內置的JSONSerialization框架手動解碼響應,或者檢查另一個程序中的API響應(例如在Postman中),請檢查會發生什麼情況。 –

+0

當我在郵遞員嘗試它時,它會返回一個成功的響應。我遇到的問題是我正在通過的日期格式。因爲時間和日期之間有空格。但我無法解碼它 –