HTTP Request in Swift with POST method in swift3

mike kumawat picture mike kumawat · May 4, 2017 · Viewed 17.8k times · Source

I'm trying to run a HTTP Request in Swift3, to POST 2 parameters to a URL.

Example:

Link:

http://test.tranzporthub.com/street45/customer_login.php

Params:

{
    "user_id":"[email protected]",
    "password":"123"
}

What is the simplest way to do that?

I don't even want to read the response. I just want to send that to perform changes on my database through a PHP file.

Answer

Atlas_Gondal picture Atlas_Gondal · May 28, 2017

I guess, you are totally newbie but here is something that you can try in SWIFT 3:

  1. Open info.plist file (Double Click OR Right Click > Open As > Source Code)
  2. Paste this code before closing </dict> and </plist> tags:

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>tranzporthub.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
    

  3. Now Open your view Controller and paste this code where you want to make post request:

    var request = URLRequest(url: URL(string: "http://test.tranzporthub.com/street45/customer_login.php")!)
    request.httpMethod = "POST"
    let postString = "[email protected]&password=123"
    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()
    

NOTE: You can remove print statements if you don't need!

Hope this helps! :)