Swift 一个键中包含多个值的Alamofire参数

Swift 一个键中包含多个值的Alamofire参数,swift,alamofire,alamofire-request,Swift,Alamofire,Alamofire Request,如何将参数作为以下数据的alamofire参数发送 数据:{“用户名”:“用户名”,“密码”:“密码”} 我想通过alamofire参数实现以下功能,但我未能实现 我正在做的是: let参数:Parameters=[“data”:[“username”:“\(textFieldUserName.text!)”,“pass”:“\(textFieldPassword.text!)”] Alamofire.request(loginUrl,方法:.post,参数:parameter,编码:JSONE

如何将参数作为以下数据的alamofire参数发送

数据:{“用户名”:“用户名”,“密码”:“密码”}

我想通过alamofire参数实现以下功能,但我未能实现

我正在做的是:

let参数:Parameters=[“data”:[“username”:“\(textFieldUserName.text!)”,“pass”:“\(textFieldPassword.text!)”]

Alamofire.request(loginUrl,方法:.post,参数:parameter,编码:JSONEncoding.default,头:nil)。responseJSON{
在

但它不起作用


查看您正在使用的api后:api希望数据值是字符串而不是对象。 您需要这样做:但这可以被重构为更干净,这只是为了解释发生了什么

创建数据参数:

let data: Parameters = [
    "username": "\(textFieldUserName.text!)",
    "pass": "\(textFieldPassword.text!)"
]
然后将其转换为字符串:下面是一个将json转换为字符串的快速搜索,但您需要仔细检查,因为我已经得到了第一个答案

let string = stringify(json: data, prettyPrinted: false)

let parameters: Parameters = [
    "data": string
]
并在请求中将编码设置为:
encoding:URLEncoding.default

Alamofire.request(
        loginURL,
        method: .post,
        parameters: parameters,
        encoding: URLEncoding.default,
        headers: nil).responseJSON { (responseData) -> Void in
            if responseData.result.value != nil {
                //do something with data
    }
}

func stringify(json: Any, prettyPrinted: Bool = false) -> String {
    var options: JSONSerialization.WritingOptions = []
    if prettyPrinted {
        options = JSONSerialization.WritingOptions.prettyPrinted
    }

    do {
      let data = try JSONSerialization.data(withJSONObject: json, options: options)
      if let string = String(data: data, encoding: String.Encoding.utf8) {
          return string
      }
    } catch {
          print(error)
    }
    return ""
}
我也会尽量避免强制展开textfield.text属性,除非您事先在其他地方验证它们的值 由于api调用是http,您还需要在info.plist中启用它:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads

你能详细说明你的问题吗?@summerfinn3我已经更新了这个问题。你能分享一下你的尝试和你遇到的问题吗?这看起来像是一个非常标准的alamofire请求:这是他们的官方文档:但这里的
数据是关键。我没能理解这里的这个花括号。我做到了ame类似:
let parameter:Parameters=[“data”:[“username”:“\(textFieldUserName.text!)”,“pass”:“\(textFieldPassword.text!)”]
但我未能带来这些形式的数据。它是随正文发送的,我不知道如何实现它。我做到了,尽管它没有显示邮递员显示的结果。