如何使用不同的值传递相同的参数

时间:2014-11-14 02:42:51

标签: alamofire

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

1 个答案:

答案 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参数存储在一个不允许重复键的字典中。