如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法

Posted

技术标签:

【中文标题】如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法【英文标题】:How to send parameter as body to PUT method using Alamofire in Swift 【发布时间】:2018-08-16 12:20:44 【问题描述】:

我想把body中的JSON参数传给PUT方法,怎么办?

请在下面找到示例 JSON。

func getKOLConnections(emials : [String],phoneNumbers : [String],address : [String],completionHandler: @escaping (Data) -> Void) -> Void 

let url = URl


let parameters :[String: Any]  = ["emails": emials,
                              "phone_numbers" : phoneNumbers,
                              "addresses" : address]

let header : HTTPHeaders =   ["Authorization": "Bearer \("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MzQzOTY0MzYsInNlc3Npb25fa2V5IjoiYmZhYjZkZTYtNzlhMy00NDIxLTg2M2YtMTY0MGJlOTQ3NmIzIiwiZXhwIjoxNTM0NDgyODM2fQ.LGclnO9vXxiywoS8TURzcm39pyhNnpeIZ4fzOTvS-jc")",
    "Content-Type": "application/json"] 


 requestdata =  Alamofire.request(url, method: .put, parameters: parameters, encoding: URLEncoding.httpBody, headers: header)
    .validate()
    .responseJSON  (response) in
        switch response.result
        case .success:
            print(response.data!)

            completionHandler(response.data!)
        case .failure(let error):
            print(error)
        
 
 

【问题讨论】:

试试这个 ***.com/a/51609885/10150796 【参考方案1】:

希望对您有所帮助:

    Alamofire.request(URL(string: "url")!, method: .put, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseJSON  (response) in

        // Handle your response
    

试试下面的参数:

 let parameters :[String: Any]  = ["emails": [["email" : "", "last_updated_dev" : nil, "is_primary" : nil, "last_updated_by" : nil]],
                                          "phone_numbers" : phoneNumbers,
                                          "addresses" : address]

【讨论】:

我做了同样的方法,但它给了我 400 错误,你能给我一些代码或检查我的代码吗? @Asmita 确保您的 api 工作正常,因为 400 是 Bad Request 错误。 在邮递员中它工作正常,可能是我做错了什么。 @iVarun @Asmita emials,phone,addrs 在[String],所以它将是String array。你和邮递员一样吗 @Asmita emails 是字典数组,您只发送数组。【参考方案2】:

截图显示需要传递的参数是:

emails phone_numbers addresses

其中emails 也是字典,但是,您将emials : [String] 传递给getKOLConnections。您可以使用getKOLConnections 的以下签名来修复它:

func getKOLConnections(emails : [String: Any],phoneNumbers : [String],address : [String],completionHandler: @escaping (Data) -> Void) -> Void

我已将emails: [String] 更改为emails: [String: Any]

emails: [String:Any] 将具有以下键:

email last_updated_dev is_primary last_updated_by

【讨论】:

以上是关于如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4:如何使用 Alamofire 在参数中发布文件?

如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?

如何使用 alamofire 将多个 PDF 文件上传到服务器? #Swift 4 #IOS [重复]

如何在 Swift 5 中使用 Alamofire 解析 json

在 Swift 中使用 Alamofire 网络进行解析时,如何在请求中发送内容类型?

如何在 Swift 4 中使用 Alamofire 上传具有其他参数的多个图像