Отправка POST-запроса в swift 2

Я делаю приложение для входа в систему, и когда я когда-либо нахожу способ отправить POST-запрос на php, и я пытаюсь это сделать, возникает либо ошибка, либо нет ошибок, но мой php-скрипт не запускается. Заранее спасибо. Я использую Mac с OS X El Capitan с XCODE 7 и Swift 2. Мой сервер — это старый компьютер с Windows с WAMPServer.

    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)

    }
}

}

Мой PHP-код ниже.

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

person Anonymous    schedule 04.10.2015    source источник
comment
Вам нужно предоставить гораздо больше информации, если вы хотите получить ответ. Какая ошибка, какой код и т.д. и т.п...   -  person Toby Allen    schedule 04.10.2015
comment
Я не получаю никаких ошибок.   -  person Anonymous    schedule 04.10.2015
comment
Тогда вы не получите никаких ответов! :)   -  person Toby Allen    schedule 04.10.2015
comment
Я только что добавил свой код.   -  person Anonymous    schedule 04.10.2015
comment
Что происходит, когда вы отправляете данные на свою php-страницу из браузера? Настройте форму для проверки вашей php-страницы и убедитесь, что она работает.   -  person Toby Allen    schedule 04.10.2015
comment
когда я тестировал php в браузере с html-формой, php-код запускается и делает то, что я хочу.   -  person Anonymous    schedule 04.10.2015
comment
Вы поставили точку останова в блоке ответов NSURLSession? Пожалуйста, опубликуйте результат модели ошибки и ответ. И, пожалуйста, не выполняйте последовательность во время сеанса. Он освободит контроллер, а затем отключит его.   -  person Björn Ro    schedule 04.10.2015
comment
Я не ставил точку останова в блоке NSURLSession, однако я ставил точки останова в других областях, но отключил их.   -  person Anonymous    schedule 04.10.2015
comment
Я не получил никаких ошибок, как я сказал. У меня есть некоторые проблемы, но не ошибки, если ошибки - это красный треугольный значок с восклицательным знаком или точкой.   -  person Anonymous    schedule 04.10.2015
comment
нет, мы имеем в виду ошибку ответа :) пожалуйста, поставьте точку останова. Или приложение не запускается?   -  person Björn Ro    schedule 04.10.2015
comment
что такое ошибка ответа? извините, я новичок в Swift.   -  person Anonymous    schedule 04.10.2015
comment
Хорошо, я вижу. Когда вы запускаете приложение, сделайте точку останова в блоке сеанса. Означает синюю метку слева :), чем коснитесь своего логина, чтобы действие сработало, вы также должны поставить точку останова в начале функции, чтобы быть уверенным, что действие срабатывает. Если нет, установите действие на кнопку. Если да, и вы прибыли в блок ответа для вашего dataRequest, распечатайте модель ошибки, которая приходит. Если вы не пришли сюда, я понятия не имею, что вы делаете :). О, и закомментируйте вызов перехода для тестирования   -  person Björn Ro    schedule 04.10.2015


Ответы (2)


После запуска задачи вы выполняете последовательность. это означает, что вы покидаете контроллер, и контроллер больше не будет существовать. Нет сильной ссылки, и поэтому ваш блок ответа не будет вызываться.

Удалите PerformSeque и повторите попытку.

person Björn Ro    schedule 04.10.2015
comment
хм, тогда поставьте точку останова в блоке ответа и проверьте в нем 3 параметра. Параметр ошибки был бы интересен. Просто сделайте в консоли: po error - person Björn Ro; 04.10.2015

Я не разрешил своему приложению работать с HTTP. Я изменил свой info.plist, добавив

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
person Anonymous    schedule 11.11.2015
comment
App Transport Security требуется для каждого приложения, отправленного в App Store после 31 декабря 2016 года. Отказаться от App Transport Security больше невозможно. Обратите внимание, что группа проверки App Store требует от вас объяснений, если вы частично отказываетесь от App Transport Security с помощью исключения, такого как NSAllowsLocalNetworking или NSAllowsArbitraryLoadsInWebContent. Подробнее об этом можно прочитать в документации Apple. - person SHS; 19.01.2017