Swift - 使用POST登录PHP

时间:2015-04-29 19:36:23

标签: php swift post login

我正在试图弄清楚为什么这段代码需要这么长时间才能登录。它目前有效,但它真的很慢。我的控制台显示它正在接收成功响应,但它仍然没有进入下一个视图控制器一段时间。我还发现,在我添加代码以解除加载指示符后,它立即关闭。所以现在如果我提供适当的凭据,它将关闭加载指示器但仍然等待15秒才能进入下一个视图控制器。想法?

        let request = NSMutableURLRequest(URL: NSURL(string: "myurl")!)
        request.HTTPMethod = "POST"
        var postString = "user=\(username.text)&pass=\(password.text)"
        var success = 0

        var alert = UIAlertView(title: "Logging In", message: "Please wait...", delegate: self, cancelButtonTitle: "Cancel");


        var loadingIndicator = UIActivityIndicatorView(frame: CGRectMake(50, 10, 37, 37)) as UIActivityIndicatorView
        loadingIndicator.center = self.view.center;
        loadingIndicator.hidesWhenStopped = true
        loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
        loadingIndicator.startAnimating();

        alert.setValue(loadingIndicator, forKey: "accessoryView")
        loadingIndicator.startAnimating()

        alert.show();

        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil {
                let alert = UIAlertView()
                alert.title = "Login Failed!"
                alert.message = "Error: \(error)"
                alert.delegate = self
                alert.addButtonWithTitle("OK")
                alert.show()
                return
            }

            println("response = \(response)")
            let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
            println("responseString = \(responseString)")

            let jsonData = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers , error: nil) as! NSDictionary
            success = jsonData["Success"] as! Int

            if(success == 1){
                alert.dismissWithClickedButtonIndex(0, animated: true)
                self.login()
            }
            else{
                let alert = UIAlertView()
                alert.title = "Login Failed"
                alert.message = "Invalid username/password"
                alert.delegate = self
                alert.addButtonWithTitle("Retry")
                alert.show()
            }

        }

        task.resume()

0 个答案:

没有答案