2016-10-17 3 views
1

попытка отправки переменных, введенных в текстовые поля, в скрипт php для записи в базу данных sql. пытается использовать HTTP RequestБыстрая отправка на php с помощью http-запроса

@IBAction func submit(_ sender: AnyObject) { 

    let requestURL = NSURL(string: "***************") 

    let request = NSMutableURLRequest(url: requestURL! as URL) 

    request.httpMethod = "POST" 

    let song=txt1.text! 
    let artist=txt2.text! 
    let album=txt3.text! 
    let year=txt4.text! 
    let genre=txt5.text! 


    let songPost = "song=" + (song as String) 
    let artistPost = "&artist=" + (artist as String) 
    let albumPost = "&album=" + (album as String) 
    let yearPost = "&year=" + (year as String) 
    let genrePost = "&genre=" + (genre as String) 

    request.httpBody = songPost.data(using: String.Encoding.utf8); 
    request.httpBody = artistPost.data(using: String.Encoding.utf8); 
    request.httpBody = albumPost.data(using: String.Encoding.utf8); 
    request.httpBody = yearPost.data(using: String.Encoding.utf8); 
    request.httpBody = genrePost.data(using: String.Encoding.utf8); 
    NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.mainQueue) 

Я получаю сообщение об ошибке в нижней строке чтения кода: Отсутствует аргумент для параметра «завершение правша» в вызове.

не уверен, что это означает.

+0

Не используйте 'NSURLConnection'. Он устарел в iOS 9. http://stackoverflow.com/questions/32441229/nsurlconnection-deprecated-in-ios9 – FelixSFD

ответ

0

Ошибка на самом деле предельно ясна здесь. Этот метод имеет третий параметр, называемый completionHandler, который отсутствует. Documentation. Замените последнюю строку с этим:

NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.mainQueue) 
{ 
    response, data, error in 
    // handle response here 
} 
+0

Я обновил вопрос, не могли бы вы проверить его еще раз? – xteetsx

+1

Вы полностью изменили вопрос. Я отменил ваши изменения. Если у вас есть новый вопрос, вы должны отправить его отдельно. – Dima

+0

Я опубликовал новый вопрос, извините, я новичок на этом сайте! Я понял, поскольку он был похож по своей природе, я мог просто отредактировать его, но я пошел вперед и разместил новый, спасибо за помощь. – xteetsx

0

Как я уже говорил в комментариях, вы не должны использовать NSURLConnection больше. Но я отвечаю на ваш вопрос, потому что это может помочь вам, если вы получите подобную ошибку в будущем.


В сообщении говорится, что вы вызываете функцию с меньшим количеством параметров, чем требуется. В этом случае отсутствует completionHandler.

NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.mainQueue, completionHandler: { 
    response , data, error in 
}) 

В Swift 3, вы можете сделать обработчик завершения, как это, тоже:

NSURLConnection.sendAsynchronousRequest(request, queue: OperationQueue.main) { 
    response , data, error in 
    // your code here 
} 

КСТАТИ: В Swift, вам не нужно использовать NSMutableURLRequest. URLRequest уже изменен с помощью var.

+0

Что происходит в // вашем коде здесь? Я не использовал этот метод, прежде чем я наткнулся на него в Интернете, но Xcode продолжал бросать на меня ошибки, я новичок в xcode – xteetsx

+0

, у него есть другая ошибка – xteetsx

+0

@xteetsx там вы можете поместить код, который вы хотите выполнить, после запрос завершен. HTTP-запрос выполняется асинхронно (в фоновом режиме). Это означает, что строка после 'sendAsynchronousRequest()' будет немедленно выполнена, но код внутри 'completeHandler()' ждет завершения запроса – FelixSFD

Смежные вопросы