如何使用swift语言创建和发送json数据到服务器

时间:2023-01-23 22:24:15

I'm new to IOS development and I have started with the swift language.

我是IOS开发的新手,我从swift语言开始。

I'm trying to get the value from two text fields and convert those two text fields into json and send that json to the server receive.php.

我试图从两个文本字段中获取值,并将这两个文本字段转换为json,并将该json发送给服务器receive.php。

lets concider that tow text fields are - name - pass

让我们简要说明这两个文本字段是- name - pass

how do i create a Json & send that to server when a button is clicked ?

如何创建Json并在单击按钮时将其发送到服务器?

1 个解决方案

#1


18  

By using http POST method with NSURLSession. Let's say you are calling submitAction method on the press of the login button

使用NSURLSession使用http POST方法。假设您在按下login按钮时调用submitAction方法

Swift 3

斯威夫特3

@IBAction func submitAction(sender: AnyObject) {

    //declare parameter as a dictionary which contains string as key and value combination. considering inputs are valid

    let parameters = ["name": nametextField.text, "password": passwordTextField.text] as Dictionary<String, String>

    //create the url with URL
    let url = URL(string: "http://myServerName.com/api")! //change the url

    //create the session object
    let session = URLSession.shared

    //now create the URLRequest object using the url object
    var request = URLRequest(url: url)
    request.httpMethod = "POST" //set http method as POST

    do {
        request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // pass dictionary to nsdata object and set it as request body

    } catch let error {
        print(error.localizedDescription)
    }

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    //create dataTask using the session object to send data to the server
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in

        guard error == nil else {
            return
        }

        guard let data = data else {
            return
        }

        do {
            //create json object from data
            if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
                print(json)
                // handle json...
            }

        } catch let error {
            print(error.localizedDescription)
        }
    })
    task.resume()
}

#1


18  

By using http POST method with NSURLSession. Let's say you are calling submitAction method on the press of the login button

使用NSURLSession使用http POST方法。假设您在按下login按钮时调用submitAction方法

Swift 3

斯威夫特3

@IBAction func submitAction(sender: AnyObject) {

    //declare parameter as a dictionary which contains string as key and value combination. considering inputs are valid

    let parameters = ["name": nametextField.text, "password": passwordTextField.text] as Dictionary<String, String>

    //create the url with URL
    let url = URL(string: "http://myServerName.com/api")! //change the url

    //create the session object
    let session = URLSession.shared

    //now create the URLRequest object using the url object
    var request = URLRequest(url: url)
    request.httpMethod = "POST" //set http method as POST

    do {
        request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // pass dictionary to nsdata object and set it as request body

    } catch let error {
        print(error.localizedDescription)
    }

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    //create dataTask using the session object to send data to the server
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in

        guard error == nil else {
            return
        }

        guard let data = data else {
            return
        }

        do {
            //create json object from data
            if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
                print(json)
                // handle json...
            }

        } catch let error {
            print(error.localizedDescription)
        }
    })
    task.resume()
}