simple example post swift parameters http-post httprequest

post - example - swift urlrequest json



Solicitud HTTP en Swift con el método POST (6)

Estoy tratando de ejecutar una Solicitud HTTP en Swift, para POST 2 parámetros a una URL.

Ejemplo:

Enlace: www.thisismylink.com/postName.php

Params:

id = 13 name = Jack

¿Cuál es la forma más simple de hacer eso?

Ni siquiera quiero leer la respuesta. Solo quiero enviar eso para realizar cambios en mi base de datos a través de un archivo PHP.


Aquí está el método que utilicé en mi biblioteca de registro: https://github.com/goktugyil/QorumLogs

Este método rellena formularios html dentro de Google Forms.

var url = NSURL(string: urlstring) var request = NSMutableURLRequest(URL: url!) request.HTTPMethod = "POST" request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding) var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true)


En Swift 3 puedes:

let url = URL(string: "http://www.thisismylink.com/postName.php")! var request = URLRequest(url: url) request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") request.httpMethod = "POST" let postString = "id=13&name=Jack" request.httpBody = postString.data(using: .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)") 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()

Esto verifica tanto los errores de red fundamentales como los errores de HTTP de alto nivel.

Consulte la revisión anterior de esta respuesta para la versión Swift 2.


Solución Swift 3 SIMPLES:

var components = URLComponents(string: "https://www.myAwesomeURL.com/") components?.queryItems = [ URLQueryItem(name: "client_id", value: myClientID), URLQueryItem(name: "client_secret", value: myClientSecret), URLQueryItem(name: "someCode", value: myAwesomeCode), ] guard let url = components?.url else { return } var request = URLRequest(url: url) request.httpMethod = "POST"

¡Y allí tienes una solicitud posterior con url y parámetros de consulta !


Swift 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 = ["id": 13, "name": "jack"] //create the url with URL let url = URL(string: "www.thisismylink.com/postName.php")! //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() }


@IBAction func btn_LogIn(sender: AnyObject) { let request = NSMutableURLRequest(URL: NSURL(string: "http://demo.hackerkernel.com/ios_api/login.php")!) request.HTTPMethod = "POST" let postString = "email: [email protected] & password: testtest" request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.sharedSession().dataTaskWithRequest(request){data, response, error in guard error == nil && data != nil else{ print("error") return } if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200{ print("statusCode should be 200, but is /(httpStatus.statusCode)") print("response = /(response)") } let responseString = String(data: data!, encoding: NSUTF8StringEncoding) print("responseString = /(responseString)") } task.resume() }


let session = URLSession.shared let url = "http://...." let request = NSMutableURLRequest(url: NSURL(string: url)! as URL) request.httpMethod = "POST" request.addValue("application/json", forHTTPHeaderField: "Content-Type") var params :[String: Any]? params = ["Some_ID" : "111", "REQUEST" : "SOME_API_NAME"] do{ request.httpBody = try JSONSerialization.data(withJSONObject: params, options: JSONSerialization.WritingOptions()) let task = session.dataTask(with: request as URLRequest as URLRequest, completionHandler: {(data, response, error) in if let response = response { let nsHTTPResponse = response as! HTTPURLResponse let statusCode = nsHTTPResponse.statusCode print ("status code = /(statusCode)") } if let error = error { print ("/(error)") } if let data = data { do{ let jsonResponse = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions()) print ("data = /(jsonResponse)") }catch _ { print ("OOps not good JSON formatted response") } } }) task.resume() }catch _ { print ("Oops something happened buddy") }