【问题标题】:Keep getting http transport security error, even though i have added the code to bypass the security不断收到 http 传输安全错误,即使我添加了绕过安全性的代码
【发布时间】:2016-04-28 16:08:25
【问题描述】:

我尝试了很多不同的方法,通常我使用的代码都有效。但是在这种情况下,我不确定它是否与我使用的教程中的代码有关。他们使用 https 而不是 http。我尝试了不同的方法我不知道该怎么做!任何意见,将不胜感激。

 @IBAction func signinTapped(sender : UIButton) {
    let username:NSString = txtUsername.text!
    let password:NSString = txtPassword.text!

    if ( username.isEqualToString("") || password.isEqualToString("") ) {

        let alertView:UIAlertView = UIAlertView()
        alertView.title = "Sign in Failed!"
        alertView.message = "Please enter Username and Password"
        alertView.delegate = self
        alertView.addButtonWithTitle("OK")
        alertView.show()
    } else {

        do {
        let post:NSString = "username=\(username)&password=\(password)"

        NSLog("PostData: %@",post);
            let url = NSURL(string:"http://")

        let postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

        let postLength:NSString = String( postData.length )

        let request:NSMutableURLRequest = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "POST"
        request.HTTPBody = postData
        request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.setValue("application/json", forHTTPHeaderField: "Accept")


        var reponseError: NSError?
        var response: NSURLResponse?

        var urlData: NSData?
        do {
            urlData = try NSURLConnection.sendSynchronousRequest(request, returningResponse:&response)
        } catch let error as NSError {
            reponseError = error
            urlData = nil
        }

        if ( urlData != nil ) {
            let res = response as! NSHTTPURLResponse!;

            NSLog("Response code: %ld", res.statusCode);

            if (res.statusCode >= 200 && res.statusCode < 300)
            {
                let responseData:NSString  = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!

                NSLog("Response ==> %@", responseData);

                //var error: NSError?

                let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary


                let success:NSInteger = jsonData.valueForKey("success") as! NSInteger

                //[jsonData[@"success"] integerValue];

                NSLog("Success: %ld", success);

                if(success == 1)
                {
                    NSLog("Login SUCCESS");

                    let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
                    prefs.setObject(username, forKey: "USERNAME")
                    prefs.setInteger(1, forKey: "ISLOGGEDIN")
                    prefs.synchronize()

                    self.dismissViewControllerAnimated(true, completion: nil)
                } else {
                    var error_msg:NSString

                    if jsonData["error_message"] as? NSString != nil {
                        error_msg = jsonData["error_message"] as! NSString
                    } else {
                        error_msg = "Unknown Error"
                    }
                    let alertView:UIAlertView = UIAlertView()
                    alertView.title = "Sign in Failed!"
                    alertView.message = error_msg as String
                    alertView.delegate = self
                    alertView.addButtonWithTitle("OK")
                    alertView.show()

                }

            } else {
                let alertView:UIAlertView = UIAlertView()
                alertView.title = "Sign in Failed!"
                alertView.message = "Connection Failed"
                alertView.delegate = self
                alertView.addButtonWithTitle("OK")
                alertView.show()
            }
        } else {
            let alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign in Failed!"
            alertView.message = "Connection Failure"
            if let error = reponseError {
                alertView.message = (error.localizedDescription)
            }
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        }
        } catch {
            let alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign in Failed!"
            alertView.message = "Server Error"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        }
    }

}

func textFieldShouldReturn(textField: UITextField) -> Bool {   //delegate method
    textField.resignFirstResponder()
    return true
}

}

【问题讨论】:

标签: ios swift ios9 nsurlconnection


【解决方案1】:

我建议将 CFNETWORK_DIAGNOSTICS 环境变量设置为 3,运行您的应用程序并查看它记录的错误。这应该会给你一些关于出了什么问题的迹象。

很可能,您的 ATS 异常在某些方面是错误的。

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2017-06-26
    • 2016-12-19
    • 2020-12-15
    • 2015-11-15
    • 2017-05-23
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多