POST request with body data with Alamofire 4

How can I send a POST request with data in an HTTP body using Alamofire 4? I used custom encoding in swift 2.3, it worked well. I converted my swift 3 code and I tried to encode paramater but it didn’t work. This code:

public struct MyCustomEncoding : ParameterEncoding { private let data: Data init(data: Data) { self.data = data } public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { var urlRequest = try urlRequest.asURLRequest() do { urlRequest.httpBody = data urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") } catch { throw AFError.parameterEncodingFailed(reason: .jsonEncodingFailed(error: error)) } return urlRequest } 

and Alamofire request:

 let enco : ParameterEncoding = MyCustomEncoding(data: ajsonData) Alamofire.request(urlString, method: .post , parameters: [:], encoding: enco , headers: headers).validate() .responseJSON { response in switch response.result { case .success: print(response) break case .failure(let error): print(error) } } 
+13
source share
5 answers

You need to send a request as shown 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) } } 
+43
source

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) } 
+2
source

Alamofire for GET and POST using Alamofire

1. Create a file called "GlobalMethod" for reuse.

 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, a call to "ServiceMethod" is created in GlobalMethod by sending values ​​to call the Service API

     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
source

Alamofire using the mail import method 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
source
 Alamofire.request(url, method: httpMethod, parameters: data.isEmpty ? nil: data, encoding: JSONEncoding.default, headers: header).responseJSON { response in switch(response.result) { case .success(let value): print("Response = \(value)") completion(Result.success(JSON(value),requestType)) break case .failure(let error): print("Failure : \(response.result.error!)") print("let error : \(error.localizedDescription)") completion(Result.failure(error)) break } } 
0
source

Source: https://habr.com/ru/post/1259755/


All Articles