2017-07-18 65 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

当我在邮递员尝试它时,它会返回一个成功的响应。我遇到的问题是我正在通过的日期格式。因为时间和日期之间有空格。但我无法解码它 –