如何在 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