我正在使用Alamofire尝试以下API,但此API有多个“to”字段。我试图传递一组“到”电子邮件作为参数。它显示没有错误,但没有发送到所有电子邮件。 API是正确的,我从终端测试了。任何建议都将受到热烈欢迎。
http -a email:pass -f POST 'sampleUrl' from="email@email.com" to="ongkur.cse@gmail.com" to="emailgmail@email.com" subject="test_sub" bodyText="testing hello"
我正在给我的代码:
class func sendMessage(message:MessageModel, delegate:RestAPIManagerDelegate?) {
let urlString = "http://localhost:8080/app/user/messages"
var parameters = [String:AnyObject]()
parameters = [
"from": message.messageFrom.emailAddress
]
var array = [String]()
for to in message.messageTO {
array.append(to)
}
parameters["to"] = array
for cc in message.messageCC {
parameters["cc"] = cc.emailAddress;
}
for bcc in message.messageBCC {
parameters["bcc"] = bcc.emailAddress;
}
parameters["subject"] = message.messageSubject;
parameters["bodyText"] = message.bodyText;
Alamofire.request(.POST, urlString, parameters: parameters)
.authenticate(user: MessageManager.sharedInstance().primaryUserName, password: MessageManager.sharedInstance().primaryPassword)
.validate(statusCode: 200..<201)
.validate(contentType: ["application/json"])
.responseJSON {
(_, _, jsonData, error) in
if(error != nil) {
println("\n sendMessage attempt json response:")
println(error!)
delegate?.messageSent?(false)
return
}
println("Server response during message sending:\n")
let swiftyJSONData = JSON(jsonData!)
println(swiftyJSONData)
delegate?.messageSent?(true)
}
}
答案 0 :(得分:0)
首先,如果您自己创建了API,那么您应该考虑更改API以期待一系列的&#39; to&#39;接收器而不是相同参数名称的多倍。
正如back2dos在此答案中说明的那样:https://stackoverflow.com/a/1898078/672989
虽然POST可能为同一个密钥设置了多个值,但我会谨慎使用它,因为有些服务器甚至无法正确处理,这可能是不支持的原因。 ..如果你转换&#34;重复&#34;列表中的参数,整个事情可能会开始窒息,如果一个参数只进入一次,那么你最终会变成一个字符串或什么......
我认为他是对的。
在这种情况下,我猜这对于Alamofire是不可能的,就像AFNetworking无法做到的那样:https://github.com/AFNetworking/AFNetworking/issues/21
Alamofire可能会将其POST参数存储在一个不允许重复键的字典中。