How to send POST request with both parameter and body for JSON data in Swift 3 using Alamofire 4?

后端 未结 2 1678
清酒与你
清酒与你 2020-12-13 16:55

Postman api url added below.

Present code :

let baseUrl = \"abc.com/search/\"
let param  =  [
        \"page\":\"1\",
        \"size\":\"5\",
               


        
2条回答
  •  被撕碎了的回忆
    2020-12-13 17:25

    Try this: Using Custom Encoding

     struct JSONStringArrayEncoding: ParameterEncoding {
        private let array: [[String : Any]]
    
        init(array: [[String : Any]]) {
            self.array = array
        }
    
        func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
            var urlRequest = try urlRequest.asURLRequest()
    
            let data = try JSONSerialization.data(withJSONObject: array, options: [])
    
            if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
                urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
            }
    
            urlRequest.httpBody = data
    
            return urlRequest
        }
    }
    

    Calling

    let values  = [
                [
                    "fieldName" : "abc",
                    "fieldValue":"xyz"
                ],
                [
                    "fieldName" : "123",
                    "fieldValue":"789"
                ]
            ]
    
            let param  =  [
                "page":"1",
                "size":"5",
                "sortBy":"profile_locality"
            ]
    
            let parameterEncoding = JSONStringArrayEncoding.init(array: values)
    
            Alamofire.request("url", method: .post, parameters: param, encoding:parameterEncoding  ).validate().response { (responseObject) in
                // do your work
            }
    

提交回复
热议问题