2015-10-14 46 views
1

我跑这个,当我尝试发送数据时没有任何反应。所以我调试了这个,它不能从URL中读取任何东西。它说“无法读取数据”。我检查了它的URL是否正确,我检查了它的好处以及我的php代码。我仅在升级到swift 2或Xcode7时遇到此问题。谢谢您的帮助!Swift,无法读取url中的数据

let myUrl = NSURL(string: "http://localhost/SwiftAppAndMySQL/scripts/registerUser.php"); 
let request = NSMutableURLRequest(URL:myUrl!); 
request.HTTPMethod = "POST"; 

let postString = "userEmail=\(userEmail!)&userFirstName=\(userFirstName!)&userLastName=\(userLastName!)&userPassword=\(userPassword!)"; 

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 

NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in 

    dispatch_async(dispatch_get_main_queue()) 
     { 

      //spinningActivity.hide(true) 

      if error != nil { 
       self.displayAlertMessage(error!.localizedDescription) 
       return 
      } 

      do { 
       let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary 

       if let parseJSON = json { 

        let userId = parseJSON["userId"] as? String 

        if(userId != nil) 
        { 
         let myAlert = UIAlertController(title: "Alert", message: "Registration successful", preferredStyle: UIAlertControllerStyle.Alert); 

         let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default){(action) in 

          self.dismissViewControllerAnimated(true, completion: nil) 
         } 

         myAlert.addAction(okAction); 
         self.presentViewController(myAlert, animated: true, completion: nil) 
        } else { 
         let errorMessage = parseJSON["message"] as? String 
         if(errorMessage != nil) 
         { 
          self.displayAlertMessage(errorMessage!) 
         } 

        } 

       } 
      } catch{ 
       print(error) 
      }  

     } 

    }).resume() 
+0

查找ATS,并期待ifau的答复。我认为他的回答很大程度上帮助你 – Lorenzo

回答

0

我告诉你我的工作的示例使用JSON

let mainString = "http://api.mymemory.translated.net/get?q=\(sendWord)&langpair=\(langpair)".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())! 
    Alamofire.request(.POST, mainString).responseJSON { (response) -> Void in 

     let mainDictionary = response.result.value as! [String : AnyObject] 
     print(mainDictionary) 
     let arrayDictionary = mainDictionary["matches"] as! [AnyObject] 
     let matchesDictionary = arrayDictionary[0] as! [String : AnyObject] 
     let segment = matchesDictionary["segment"] as! String 
     print(segment) 
     let translation = matchesDictionary["translation"] as! String 
     print(translation) 

第二个例子

let url = NSURL(string: "http://api.mymemory.translated.net/get?q=Hello%20World!&langpair=en%7Cit")! 
    let dataData = NSData(contentsOfURL: url)! 
    let main = try! NSJSONSerialization.JSONObjectWithData(dataData, options: NSJSONReadingOptions.AllowFragments) 
    print(main) 
+0

almofire是一种新的做法吗? –

+0

@DanM它是库。这是链接https://github.com/Alamofire/Alamofire就可以了。 – Alexander

2

我只遇到此问题,当我升级到2迅速或Xcode7。

的Xcode 7包含iPhone模拟器与iOS 9.的iOS 9具有一个新功能 - 应用传输安全性(ATS),这防止非安全连接(HTTP)。更多信息:

+0

是的,我摆脱了App运输安全块,我不知道它会是什么。 –