Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create and send the json data to server using swift language

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

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.

lets concider that tow text fields are - name - pass

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

like image 785
Uday Avatar asked Dec 26 '14 08:12

Uday


2 Answers

Swift 3,Swift 4 The method above is very in-efficient, use alamofire instead

https://github.com/Alamofire/Alamofire

get email and passwoord from textfield

@IBAction func submitAction(sender: AnyObject) {
let email= emailfield.text
let password= emailfield.text
let parameters: Parameters = [
    "email": email,
    "password": password
    ]

Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters) }

or here is an example

let parameters: Parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
    "x": 1,
    "y": 2,
    "z": 3
]
]

// All three of these calls are equivalent
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.default)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.httpBody)

// HTTP body: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3
like image 192
Kingsley Mitchell Avatar answered Oct 20 '22 14:10

Kingsley Mitchell


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

Swift 3

@IBAction func submitAction(_ sender: UIButton) {

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

    let parameters: [String: String] = ["name": nametextField.text, "password": passwordTextField.text]

    //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, 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()
}
like image 29
Suhit Patil Avatar answered Oct 20 '22 15:10

Suhit Patil