2

我正在使用 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)
    }
}
4

1 回答 1

0

首先,如果您自己创建了 API,您应该考虑更改 API 以期望一个 'to' 接收器数组,而不是多次使用相同的参数名称。

正如back2dos在这个答案中所说:https ://stackoverflow.com/a/1898078/672989

虽然 POST 可能对同一个键有多个值,但我会谨慎使用它,因为某些服务器甚至无法正确处理它,这可能是不支持的原因......如果你转换“重复”参数对于一个列表,如果一个参数只出现一次,整个事情可能会开始窒息,突然间你会得到一个字符串或其他东西......

我认为他是对的。

在这种情况下,我猜这对于 Alamofire 是不可能的,就像 AFNetworking 不可能一样:https ://github.com/AFNetworking/AFNetworking/issues/21

Alamofire 可能将其 POST 参数存储在不允许重复键的字典中。

于 2014-11-26T14:27:35.407 回答