【问题标题】:Alamofire 4, Swift 3 and building a json bodyAlamofire 4、Swift 3 和构建 json 主体
【发布时间】:2017-04-03 19:48:37
【问题描述】:
{"title":"exampleTitle","hashTags":[{"name":"tag1"},{"name":"tag2"}],"uploadFiles":
[{"fileBytes":"seriesOfBytes\n","filename":"upload.txt"}]}

这是我想要发送到后端的所需正文。

我正在使用 Swift 3.0 和 Alamofire 4,我有多个问题。

首先,如何正确创建包含值和值数组的主体?

我的做法是:

let para:NSMutableDictionary = NSMutableDictionary()
para.setValue("exampleTitle", forKey: "title")
let jsonData = try! JSONSerialization.data(withJSONObject: para, options: .init(rawValue: 0))
let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue) as! String
print(jsonString)

这给了我

{"title":"exampleTitle"}

第二,我的 alamofire .post 请求如下所示,但不起作用:

Alamofire.request(postURL, method: .post, parameters: jsonString, encoding: JSONEncoding.default)
        .responseJSON { response in
            debugPrint(response)
    }

我收到错误消息:调用中的额外参数“方法”。如果 i 而不是 jsonString 使用类型的字符串

 var jsonString: [String : Any]

它确实有效,但我不知道如何将身体放入这种类型。

总结 寻求有关如何创建正文以及如何通过 Alamofire 4 和 swift 3 将其发送到我的后端的帮助(示例将是最好的)。

【问题讨论】:

标签: json swift dictionary swift3 alamofire


【解决方案1】:

您需要将参数作为[String:Any] 字典传递,因此像这样创建一个字典作为传递的JSON。

let params = [ 
                "title":"exampleTitle",
                "hashTags": [["name":"tag1"],["name":"tag2"]],
                "uploadFiles":[["fileBytes":"seriesOfBytes\n","filename":"upload.txt"]]
             ]

现在将 params 作为参数传递给 Alamofire 请求。

Alamofire.request(postURL, method: .post, parameters: params, encoding: JSONEncoding.default)
    .responseJSON { response in
        debugPrint(response)
}

【讨论】:

  • 在我将其标记为已接受之前还有一个问题:我也有标题,我应该将它们放在请求中的什么位置以及它们需要如何格式化?我试图像参数一样添加它们,但它又给了我额外的呼叫消息。
  • 对于标题检查这个github.com/Alamofire/Alamofire#http-headers,如果你仍然没有在这里提出新问题。
  • 检查此是否传递标头stackoverflow.com/a/39512635/6433023
猜你喜欢
  • 2019-03-17
  • 1970-01-01
  • 2023-03-14
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多