试图将字典发布到我的后端
Posted
技术标签:
【中文标题】试图将字典发布到我的后端【英文标题】:Trying to Post a dictionary to my backend 【发布时间】:2016-10-03 09:59:08 【问题描述】:我正在尝试使用 Alamofire 将字典发布到我的后端:
这是我的代码:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void))
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map( ["number": $0] )
let json = JSON(phoneNumbersDictionary)
print(json)
Alamofire.request(.POST, urlString, parameters: phoneNumbersDictionary, encoding: .JSON).validate().responseJSON(completionHandler: response in
if response.result.isSuccess
if let json = response.result.value
let json = JSON(json)
if response.result.isFailure
)
它不会编译,因为 phoneNumbersDictionairy 不符合预期的参数:
不过,print(json) 打印的正是我在 Postman 中的内容。这是我要发布的身体。 打印的声明:
[
"number" : "85555512"
,
"number" : "85551212"
,
"number" : "55648583"
]
我的邮递员:
我怎样才能做到这一点?
【问题讨论】:
phonenumbers
的数组长什么样?
你的错误意味着这个 Alamofire 方法向网络发送了一个字典,但是你试图发送一个它显然不能发送的字典数组。
基本上,您的“phoneNumbersDictionary”不是字典。它是一个数组。
这会帮助你***.com/questions/27026916/…
【参考方案1】:
正如错误消息所述,phonenumbers.map(["number": $0])
返回[[String:String]]
类型的数组,正如您在我附加的图片中看到的那样。
Alamofire 需要一个 [String: AnyObejct]?
类型的数组作为参数。
但也许How to send a post request with body 或Sending json array via alamofire 可以帮助你。
【讨论】:
【参考方案2】:我最终使用了这个:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void))
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map( ["number": $0] )
let inputJSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: [])
let request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
request.HTTPBody = inputJSON
Alamofire.request(request).validate().responseJSON(completionHandler: response in
if response.result.isSuccess
if let value = response.result.value
let json = JSON(value)
let jsonString = json.rawString()
if let users:Array<User> = Mapper<User>().mapArray(jsonString)
completionHandler(users, nil)
else
completionHandler([nil], nil)
if response.result.isFailure
let message = ApiMessage()
message.message = "No users found"
completionHandler([nil],message)
)
【讨论】:
以上是关于试图将字典发布到我的后端的主要内容,如果未能解决你的问题,请参考以下文章
在 Google OAuth2 授权流程之后如何将 JWT 从我的后端服务器发送到我的前端
为啥我的后端中的 axios 发布请求没有将任何数据发送回我的外部 api? -