POST request with data in body with Alamofire 4

前端 未结 4 668
闹比i
闹比i 2020-12-05 07:13

how is it possible to send a POST request with a data in the HTTP body with Alamofire 4? I used custom encoding at swift 2.3 it was working good. I converted my code swift 3

相关标签:
4条回答
  • 2020-12-05 07:34

    Alamofire using post method import UIKit import Alamofire

    class ViewController: UIViewController {
        let parameters = [
            "username": "foo",
            "password": "123456"
        ]
        let url = "https://httpbin.org/post"
    
    override func viewDidLoad() {
            super.viewDidLoad()
    Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON {
                response in
                switch (response.result) {
                case .success:
                    print(response)
                    break
                case .failure:
                    print(Error.self)
                }
            }
    }
    
    0 讨论(0)
  • 2020-12-05 07:38

    You need to send request like below in swift 3

    let urlString = "https://httpbin.org/get"
    
    Alamofire.request(urlString, method: .post, parameters: ["foo": "bar"],encoding: JSONEncoding.default, headers: nil).responseJSON {  
    response in
      switch response.result {
                    case .success:
                        print(response)
    
                        break
                    case .failure(let error):
    
                        print(error)
                    }
    }
    

    Swift 5 with Alamofire 5:

    AF.request(URL.init(string: url)!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
            print(response.result)
    
            switch response.result {
    
            case .success(_):
                if let json = response.value
                {
                    successHandler((json as! [String:AnyObject]))
                }
                break
            case .failure(let error):
                failureHandler([error as Error])
                break
            }
        }
    
    0 讨论(0)
  • 2020-12-05 07:38

    This will work better in Swift 4.

    let url = "yourlink.php". // This will be your link
    let parameters: Parameters = ["User_type": type, "User_name": name, "User_email": email, "User_contact": contact, "User_password": password, "from_referral": referral]      //This will be your parameter
    
    Alamofire.request(url, method: .post, parameters: parameters).responseJSON { response in
        print(response)
    }
    
    0 讨论(0)
  • 2020-12-05 07:46

    Alamofire for GET and POST method using Alamofire

    1.Create a file named "GlobalMethod" for multiple use

    import Alamofire
    class GlobalMethod: NSObject {
    
        static let objGlobalMethod = GlobalMethod()
    
        func ServiceMethod(url:String, method:String, controller:UIViewController, parameters:Parameters, completion: @escaping (_ result: DataResponse<Any>) -> Void) {
    
                var headers = Alamofire.SessionManager.defaultHTTPHeaders
                headers["HeaderKey"] = "HeaderKey"
                if method == "POST" {
                    methodType = .post
                    param = parameters
                }
                else {
                    methodType = .get
                }
                Alamofire.request(url, method: methodType, parameters: param, encoding: JSONEncoding.default, headers:headers
                    ).responseJSON
                    { response in
    
                        completion(response)
                }
            }
    }
    
    1. In the View Controller call "ServiceMethod" created in GlobalMethod by sending values to call API Service

      let urlPath = "URL STRING"
      let methodType = "GET" or "POST" //as you want
      let params:[String:String] = ["Key":"Value"]
      
      GlobalMethod.objGlobalMethod.ServiceMethod(url:urlPath, method:methodType, controller:self, parameters:params)
              {
                  response in
      
                  if response.result.value == nil {
                      print("No response")
                      return
                  }
                  else {
                    let responseData = response.result.value as! NSDictionary
                    print(responseData)
                  }
              }
      
    0 讨论(0)
提交回复
热议问题