Swift 4
Build an app using Alamofire with the Api Post method
Install pod file -pod 'Alamofire', '~> 4.0' for Swift 3 with Xcode 9
Create class Webservices.swift, import Alamofire
Design scenario, login view
paste the following code for ViewControllerClass
import UIKit class ViewController: UIViewController { @IBOutlet var usernameTextField: UITextField! @IBOutlet var passwordTextField: UITextField! var usertypeStr :String = "-----------" var loginDictionary : NSDictionary? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func loginButtonClicked(_ sender: Any) { WebServices.userLogin(userName: usernameTextField.text!, password: passwordTextField.text!,userType: usertypeStr) {(result, message, status )in if status { let loginDetails = result as? WebServices self.loginDictionary = loginDetails?.loginData if self.loginDictionary?["status"] as? String == "error" { self.alertMessage(alerttitle: "Login Error", (self.loginDictionary?["message"] as? String)!) } else if self.loginDictionary?["status"] as? String == "ok" { self.alertMessage(alerttitle: "", "Success") }else { self.alertMessage(alerttitle: "", (self.loginDictionary?["message"] as? String)!) } } else { self.alertMessage(alerttitle: "", "Sorry") } } } func alertMessage(alerttitle:String,_ message : String){ let alertViewController = UIAlertController(title:alerttitle, message:message, preferredStyle: .alert) alertViewController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) present(alertViewController, animated: true, completion: nil) } }
Paste the following code for WebserviceClass
import Foundation import Alamofire class WebServices: NSObject { enum WebServiceNames: String { case baseUrl = "https://---------------" case UserLogin = "------------" } // MARK: - Login Variables var loginData : NSDictionary? class func userLogin(userName: String,password : String,userType : String, completion : @escaping (_ response : AnyObject?, _ message: String?, _ success : Bool)-> ()) { let url = WebServiceNames.baseUrl.rawValue + WebServiceNames.UserLogin.rawValue let params = ["USER": userName,"PASS":password,"API_Key" : userType] WebServices.postWebService(urlString: url, params: params as [String : AnyObject]) { (response, message, status) in print(response ?? "Error") let result = WebServices() if let data = response as? NSDictionary { print(data) result.loginData = data completion(result, "Success", true) }else { completion("" as AnyObject?, "Failed", false) } } } //MARK :- Post class func postWebService(urlString: String, params: [String : AnyObject], completion : @escaping (_ response : AnyObject?, _ message: String?, _ success : Bool)-> Void) { alamofireFunction(urlString: urlString, method: .post, paramters: params) { (response, message, success) in if response != nil { completion(response as AnyObject?, "", true) }else{ completion(nil, "", false) } } } class func alamofireFunction(urlString : String, method : Alamofire.HTTPMethod, paramters : [String : AnyObject], completion : @escaping (_ response : AnyObject?, _ message: String?, _ success : Bool)-> Void){ if method == Alamofire.HTTPMethod.post { Alamofire.request(urlString, method: .post, parameters: paramters, encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in print(urlString) if response.result.isSuccess{ completion(response.result.value as AnyObject?, "", true) }else{ completion(nil, "", false) } } }else { Alamofire.request(urlString).responseJSON { (response) in if response.result.isSuccess{ completion(response.result.value as AnyObject?, "", true) }else{ completion(nil, "", false) } } } } //Mark:-Cancel class func cancelAllRequests() { Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in dataTasks.forEach { $0.cancel() } uploadTasks.forEach { $0.cancel() } downloadTasks.forEach { $0.cancel() } } } }