是否可以在 Afnetworking POST 方法中发布字典数组?

Posted

技术标签:

【中文标题】是否可以在 Afnetworking POST 方法中发布字典数组?【英文标题】:Is Possible to POST array of dictionaries in Afnetworking POST Method? 【发布时间】:2014-08-21 05:20:04 【问题描述】:

我正在开发一个 ios 应用程序,将数据发布到 Web 服务并从 Web 服务获取数据。 我正在使用 Afnetworking 将数据发布到 Web 服务。Web 服务以字典数组的形式接受数据,例如

["name":"stephen","age":25,"name":"john","age":35,"name":"david","age":45,"name":"roger","age":15]

需要在请求体中发送,并在请求头中设置Accept application/json。

我检查了一些已经在堆栈溢出中可用的示例,但所有示例都是关于 Post 字典的解释。我的问题是可以使用 Afnetworking 将数组发布到 Web 服务。如果可能的话,请帮助我开发完全符合我要求的代码。

【问题讨论】:

是的,如果你接受一个键的数组 @amar 数组对键?你能解释一下吗? 如果您在邮寄中发送它,那么它必须针对一个键值。您将发送一个字典,该字典将具有一个键 : @amar key: ["name":"stephen","age":25,"name":"john","age":35,"name" :"david","age":45,"name":"roger","age":15] 喜欢这种类型吗? 是的,但你不必这样做 jsonrequestserializer 会为你做的 【参考方案1】:

如果您在单个数组中发送所有字典。首先,您必须对每个字典进行 JSON 序列化,然后将其放入数组中,然后再次 JSON 序列化整个数组。然后只有它会被称为正确的 JSON 格式。这是您可以做到的唯一方法。

【讨论】:

【参考方案2】:

我给你的建议是使用 AFJSONRequestSerializer。

Swift 解决方案:

    let manager = AFHTTPSessionManager(baseURL: URL(string: yourBaseURL))
    manager.requestSerializer = AFJSONRequestSerializer()
    let parameters: [[String: Any]] = [["name": "stephen", "age": 25], ["name": "john", "age": 35],["name": "david", "age": 45]]
    manager.post(requestURL,
         parameters: parameters,
         progress: nil,
         success:  (task, data) in
            // process server response

    , failure:   (task, error) in
           // process error server  response
    )

AFJSONRequestSerializer 在请求头中将 Content-type 设置为 application/json。

【讨论】:

以上是关于是否可以在 Afnetworking POST 方法中发布字典数组?的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking,完成请求时回调?

如何使用 AFNetworking 通过 Post 请求在服务器上发送 NSData?

AFNetworking POST 请求失败代码=-1011 (400)

AFNetworking 和 POST 请求

AFNetworking 2.0 POST 请求无法快速工作

AFNetworking 2.0 POST 请求的问题