在swift 2中发送POST请求

在swift 2中发送POST请求,post,swift2,xcode7,Post,Swift2,Xcode7,我正在制作一个登录应用程序,当我找到一种向php发送POST请求的方法并尝试它时,要么出现错误,要么没有错误,但没有运行我的php脚本。提前谢谢。我使用的是mac和OS X El Capitan以及XCODE 7和Swift 2。我的服务器是一台带有WAMPServer的旧windows pc import UIKit class Login: UIViewController { @IBOutlet weak var UserName: UITextField! @IBOutlet

我正在制作一个登录应用程序,当我找到一种向php发送POST请求的方法并尝试它时,要么出现错误,要么没有错误,但没有运行我的php脚本。提前谢谢。我使用的是mac和OS X El Capitan以及XCODE 7和Swift 2。我的服务器是一台带有WAMPServer的旧windows pc

    import UIKit
 class Login: UIViewController {
@IBOutlet weak var UserName: UITextField!
@IBOutlet weak var PassWord: UITextField!
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?){
      UserName.resignFirstResponder()
    view.endEditing(true)
    super.touchesBegan(touches, withEvent: event)
}
   @IBAction func LoginTapped(sender: AnyObject) {
    var UserNameEntered = UserName.text
    var PassWordEntered = PassWord.text
    let ClientUserNameStored = NSUserDefaults.standardUserDefaults().stringForKey("UserName");
    let ClientPassWordStored = NSUserDefaults.standardUserDefaults().stringForKey("PassWord");
    if(ClientUserNameStored != UserNameEntered && PassWordEntered != ClientPassWordStored || ClientUserNameStored != UserNameEntered && PassWordEntered == ClientPassWordStored || ClientUserNameStored == UserNameEntered && ClientPassWordStored != PassWordEntered){
        print("Not equal")
        var Alert = UIAlertController(title: "Warning", message: "Invalid username or password!", preferredStyle: UIAlertControllerStyle.Alert)

        Alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (action: UIAlertAction!) in UserNameEntered = ""; PassWordEntered = "";
        }))
        presentViewController(Alert, animated: true, completion: nil)
    }else{
        let request = NSMutableURLRequest(URL: NSURL(string: "http://host/my/file.php")!)
        request.HTTPMethod = "POST"
        let postString = "username=\(UserNameEntered)&password=\(PassWordEntered)"
        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil {
                print("error=\(error)")
                return
            }

            print("response = \(response)")

            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("responseString = \(responseString)")
        }
        task.resume()

                  self.performSegueWithIdentifier("GoToHome", sender: self)

    }
}

}
导入UIKit
类登录名:UIViewController{
@ibvar用户名:UITextField!
@IBOUTLE弱var密码:UITextField!
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
UserName.resignFirstResponder()的名称
view.endEditing(真)
super.touchsbegind(touchs,withEvent:event)
}
@iAction func登录标记(发件人:AnyObject){
var usernameintered=UserName.text
var PassWordEntered=PassWord.text
让ClientUserNameStored=NSUserDefaults.standardUserDefaults().stringForKey(“用户名”);
让ClientPassWordStored=NSUserDefaults.standardUserDefaults().stringForKey(“密码”);
如果(ClientUserNameStored!=UserNameEntered&&PassWordEntered!=ClientPassWordStored | | ClientUserNameStored!=UserNameEntered&&PassWordEntered==ClientPassWordStored | | ClientUserNameStored==UserNameEntered&&ClientPassWordStored!=PassWordEntered){
打印(“不相等”)
var Alert=UIAlertController(标题:“警告”,消息:“无效用户名或密码!”,首选样式:UIAlertControllerStyle.Alert)
addAction(UserNameEntered=“”;PassWordEntered=“”)中的UIAlertAction(标题:“确定”,样式:。默认,处理程序:{(操作:UIAlertAction!));
}))
presentViewController(警报、动画:真、完成:无)
}否则{
let request=NSMutableURLRequest(URL:NSURL(字符串:)http://host/my/file.php")!)
request.HTTPMethod=“POST”
让postString=“username=\(usernamentered)&password=\(PassWordEntered)”
request.HTTPBody=postString.dataUsingEncoding(NSUTF8StringEncoding)
让task=NSURLSession.sharedSession().dataTaskWithRequest(请求){
数据、响应、错误
如果错误!=nil{
打印(“错误=\(错误)”)
返回
}
打印(“响应=\(响应)”)
让responseString=NSString(数据:data!,编码:NSUTF8StringEncoding)
打印(“responseString=\(responseString)”)
}
task.resume()
self.performsguewithidentifier(“GoToHome”,发送方:self)
}
}
}
下面是我的PHP代码

<?php
$postVar = $_POST['username'];
$postVartwo = $_POST['password'];
$file = fopen("test.txt", "a");
echo fwrite($file, $postVar."pass".$postVartwo);
fclose($file);
?>

运行任务后,执行顺序。这意味着您离开控制器,控制器将不再存在。没有强引用,因此不会调用您的响应块


请删除性能设置,然后重试。

运行任务后,执行序列。这意味着您离开控制器,控制器将不再存在。没有强引用,因此不会调用您的响应块


请删除性能设置,然后重试。

我不允许我的应用程序使用HTTP。我通过添加更改了我的info.plist

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

我不允许我的应用程序使用HTTP。我通过添加更改了我的info.plist

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

如果你想得到答案,你需要提供更多的信息。什么错误,什么代码,等等……我没有任何错误。那么你就不会得到任何答案了!:)我刚刚添加了我的代码。当您从浏览器将数据发布到php页面时会发生什么?设置一个表单来测试你的php页面,并确保它正常工作。如果你想要答案,你需要提供更多的信息。什么错误,什么代码,等等……我没有任何错误。那么你就不会得到任何答案了!:)我刚刚添加了我的代码。当您从浏览器将数据发布到php页面时会发生什么?设置一个表单来测试您的php页面,并确保它能正常工作。然后在响应块中放置一个断点并检查其中的3个参数。错误参数会很有趣。只需在控制台中执行以下操作:poerrorhmm,然后在响应块中放置一个断点并检查其中的3个参数。错误参数会很有趣。只需在控制台中执行:2016年12月31日之后提交到应用商店的每个应用程序都需要po errorApp传输安全。不再可能选择退出应用程序传输安全。请注意,如果您使用异常(如NSAllowsLocalNetworking或NSAllowsArbitraryLoadsInWebContent)部分退出应用程序传输安全性,则应用商店审查团队需要您提供解释。您可以在苹果的文档中了解更多信息。2016年12月31日之后提交给App Store的每个应用程序都需要应用程序传输安全。不再可能选择退出应用程序传输安全。请注意,如果您使用异常(如NSAllowsLocalNetworking或NSAllowsArbitraryLoadsInWebContent)部分退出应用程序传输安全性,则应用商店审查团队需要您提供解释。你可以在苹果的文档中了解更多。