Ios 继续获取http传输安全性错误,即使我添加了代码以绕过安全性
我尝试了很多不同的方法,通常我使用的代码都能正常工作。但是在这种情况下,我不确定这是否与我使用的教程中的代码有关。他们使用了https而不是http。我尝试过不同的方法,我不知道该怎么办!如有任何建议,将不胜感激Ios 继续获取http传输安全性错误,即使我添加了代码以绕过安全性,ios,swift,ios9,nsurlconnection,Ios,Swift,Ios9,Nsurlconnection,我尝试了很多不同的方法,通常我使用的代码都能正常工作。但是在这种情况下,我不确定这是否与我使用的教程中的代码有关。他们使用了https而不是http。我尝试过不同的方法,我不知道该怎么办!如有任何建议,将不胜感激 @IBAction func signinTapped(sender : UIButton) { let username:NSString = txtUsername.text! let password:NSString = txtPassword.text!
@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
}
@iAction func已签名(发件人:UIButton){
让用户名:NSString=txtUsername.text!
让密码:NSString=txtPassword.text!
if(username.isEqualToString(“”)| | password.isEqualToString(“”){
让alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“请输入用户名和密码”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}否则{
做{
让我们发布:NSString=“用户名=\(用户名)&密码=\(密码)”
NSLog(“PostData:%@”,post);
让url=NSURL(字符串:“http://”)
让postData:NSData=post.dataUsingEncoding(NSASCIIStringEncoding)!
让postLength:NSString=String(postData.length)
let请求:NSMutableURLRequest=NSMutableURLRequest(URL:URL!)
request.HTTPMethod=“POST”
request.HTTPBody=postData
setValue(postLength为字符串,forHTTPHeaderField:“内容长度”)
request.setValue(“application/x-www-form-urlencoded”,forHTTPHeaderField:“内容类型”)
request.setValue(“application/json”,forHTTPHeaderField:“Accept”)
var REPORNSERROR:NSError?
var响应:nsurresponse?
var urlData:NSData?
做{
urlData=尝试NSURLConnection.sendSynchronousRequest(请求、返回响应:&response)
}将let错误捕获为NSError{
reponserror=错误
urlData=nil
}
if(urlData!=nil){
让res=响应为!NSHTTPURLResponse!;
NSLog(“响应代码:%ld”,res.statusCode);
如果(res.statusCode>=200&&res.statusCode<300)
{
让responseData:NSString=NSString(数据:urlData!,编码:NSUTF8StringEncoding)!
NSLog(“响应==>%@”,响应数据);
//var错误:N错误?
让jsonData:NSDictionary=尝试将NSJSONSerialization.JSONObjectWithData(urlData!,选项:NSJSONReadingOptions.MutableContainers)作为!NSDictionary
让success:NSInteger=jsonData.valueForKey(“success”)作为!NSInteger
//[jsonData[@“success”]integerValue];
NSLog(“成功:%ld”,成功);
如果(成功==1)
{
NSLog(“登录成功”);
let prefs:NSUserDefaults=NSUserDefaults.standardUserDefaults()
prefs.setObject(用户名,forKey:“用户名”)
prefs.setInteger(1,forKey:“ISLOGGEDIN”)
prefs.synchronize()
self.dismissViewControllerAnimated(真,完成:无)
}否则{
var错误消息:NSString
如果jsonData[“错误消息”]为?NSString!=nil{
error\u msg=jsonData[“error\u message”]as!NSString
}否则{
错误\u msg=“未知错误”
}
让alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=错误消息为字符串
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}否则{
让alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“连接失败”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}否则{
让alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“连接失败”
如果let error=reponseError{
alertView.message=(错误.localizedDescription)
}
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}抓住{
让alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“服务器错误”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}
}
func textField应该返回(textField:UITextField)->Bool{//delegate方法
textField.resignFirstResponder()辞职
返回真值
}
}我建议将CFNETWORK\u DIAGNOSTICS环境变量设置为3,运行应用程序,并查看它记录了哪些错误。这会给你一些关于哪里出了问题的指示
很有可能,您的ATS异常在某种程度上是错误的。与您的问题无关,但您完全可以将alertView创建和显示移动到一个帮助器方法中并调用它,而不必有太多重复的alertView创建代码。的可能重复