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

前端 未结 2 759
礼貌的吻别
礼貌的吻别 2020-12-08 17:37

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

相关标签:
2条回答
  • 2020-12-08 18:17

    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()
    }
    
    0 讨论(0)
  • 2020-12-08 18:20

    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
    
    0 讨论(0)
提交回复
热议问题