php - 快速 3 http 请求

标签 php swift nsurlsession

我正在尝试将用户的输入发送到 php 脚本以使其最终传递到 SQL 服务器,大多数代码运行但在提交数据时遇到问题。

@IBAction func submit(_ sender: AnyObject) {

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

    let request = NSMutableURLRequest(url:requestURL!)

    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);
 --->>let task =  URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(error)")
            print(response)

            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }

        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(responseString)")
    }
    task.resume()

urlsession.shared.datatask 代码行有问题。编译器错误显示“对 member'dataTask(with:completionhandler:) 的模糊引用”

什么可以使此代码起作用?我如何验证此信息是否已在应用程序上传递?

最佳答案

您收到该错误消息的原因是因为您在需要 URLRequest 的地方传递了 NSMutableURLRequest

改变这一行:

    let request = NSMutableURLRequest(url:requestURL!)

为此:

    var request = URLRequest(url:requestURL!)

应该修复它。

但我建议多做一些修复,以使您的请求成功发送到服务器:

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

    //You should use `URLRequest` in Swift 3, mutability is represented by `var`
    var request = URLRequest(url:requestURL!)

    request.httpMethod = "POST"

    //UITextField.text can be nil, you should treat nil cases
    //(Generally avoid using forced unwrapping `!` as far as you can.)
    let song = txt1.text ?? ""
    let artist = txt2.text ?? ""
    let album = txt3.text ?? ""
    let year = txt4.text ?? ""
    let genre = txt5.text ?? ""

    //`song`,... are all Strings, you have no need to add `as String`
    let songPost = "song=" + song
    let artistPost = "&artist=" + artist
    let albumPost = "&album=" + album
    let yearPost = "&year=" + year
    let genrePost = "&genre=" + genre

    //You need to make a single data containing all params
    //(Creating a concatenated String and getting `data` later would be another way.)
    var data = Data()
    data.append(songPost.data(using: String.Encoding.utf8)!)
    data.append(artistPost.data(using: String.Encoding.utf8)!)
    data.append(albumPost.data(using: String.Encoding.utf8)!)
    data.append(yearPost.data(using: String.Encoding.utf8)!)
    data.append(genrePost.data(using: String.Encoding.utf8)!)
    request.httpBody = data
    let task =  URLSession.shared.dataTask(with: request) { data, response, error in
       ...

关于php - 快速 3 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096687/

相关文章:

javascript - PHP 试图转义单引号

swift - 在初始化所有存储的属性之前,由于自身导致的自定义解码器错误

ios - 如何使用@IBAction 函数和观察者更改按钮上的图像

objective-c - NSMutableURLRequest setTimeoutInterval 在 ios 11.0 中不起作用

php - Redis 故障导致 Laravel 5.6 中的登录和注册问题

php - http ://server-which-responds-with-204. com 是什么意思?

swift 一元运算符 '++' 不能应用于 'Int!' 类型的操作数

ios - 设备进入休眠模式时临时部署中的背景 NSURLSession 问题

nsurlconnection - Domain=NSURLErrorDomain Code=-1001 "The operation couldn’ 待完成。 (NSURLErrorDomain 错误-1001。)”

php - 从用户 ID 中检索用户数据