尝试 Post 字典到我的后端
Trying to Post a dictionary to my backend
我正在尝试 Post 使用 Alamofire 将 Dictionairy 添加到我的后端:
这是我的代码:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=11=]] })
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 中的内容。这就是我想要的身材post。
打印语句:
[
{
"number" : "85555512"
},
{
"number" : "85551212"
},
{
"number" : "55648583"
}
]
我的Post男人:
我怎样才能做到这一点?
如错误消息所述,phonenumbers.map({["number": [=10=]]})
returns 类型为 [[String:String]]
的数组,如您在我附上的图片中所见。
Alamorfire 需要一个 [String: AnyObejct]?
类型的数组作为参数。
但也许 or Sending json array via alamofire可以帮到你。
我最终使用了这个:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=10=]] })
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)
}
})
}
我正在尝试 Post 使用 Alamofire 将 Dictionairy 添加到我的后端:
这是我的代码:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=11=]] })
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 中的内容。这就是我想要的身材post。 打印语句:
[
{
"number" : "85555512"
},
{
"number" : "85551212"
},
{
"number" : "55648583"
}
]
我的Post男人:
我怎样才能做到这一点?
如错误消息所述,phonenumbers.map({["number": [=10=]]})
returns 类型为 [[String:String]]
的数组,如您在我附上的图片中所见。
Alamorfire 需要一个 [String: AnyObejct]?
类型的数组作为参数。
但也许
我最终使用了这个:
func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) {
let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers)
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=10=]] })
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)
}
})
}