【问题标题】:Alamofire Paramaters not Serialising ProperlyAlamofire 参数未正确序列化
【发布时间】:2018-12-07 06:27:09
【问题描述】:

所以我在使用AFNetworking 或使用Alamofire 的任何其他API 调用时从未遇到过这个问题,但是我似乎遇到了问题,基本上我有一个Array of Dictionaries 应该像这样格式化;

[{"value":"1","created_at":"2018-06-26 01:57:14"},
 {"value":"4","created_at":"2018-06-26 01:59:44"}]

但是他们是这样通过服务器端的;

[{"value":"4"},{"created_at":"2018-06-26 02:30:11"},
{"value":"4"},{"created_at":"2018-06-26 03:24:41"}]

我尝试创建硬编码参数以使其工作但没有成功,我在哪里出错了伙计们(我知道这可能很愚蠢), 这是硬编码的演示参数;

let dictA =  ["value":"2", "created_at":"2018-06-26 04:05:50"]
let dictB =  ["value":"4", "created_at":"2018-06-26 05:05:50"]
let params : NSDictionary = ["values":[dictA,dictB]]

tia

//编辑

这是Alamofire 请求;

Alamofire.request(urlString, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { response in 
    //Handle response 
})

//编辑

我已经通过变通解决了这个问题,由于某种原因,当对象首先使用本机 URLRequest 序列化到正文中时,对象格式正确,然后使用该请求初始化 Alamofire 请求;

var request = URLRequest(url: url)

request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try! JSONSerialization.data(withJSONObject: params)

Alamofire.request(request).responseJSON(completionHandler: { response in
         //Handle response
})

【问题讨论】:

  • 您的服务器是否在您的控制之下?如果不是,您将无法按预期映射您的响应。
  • 你能分享你的漏洞代码来获取和解析你的数据吗?
  • 正如我在问题中所说,这是硬编码的参数,这正是它使用 Alamofire 发送的方式; Alamofire.request(urlString, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { response in //Handle response })

标签: ios json swift dictionary alamofire


【解决方案1】:

尝试改变:

let params: Parameters = ["values": [dictA, dictB]]

let params: [String: Any] = ["values": [dictA, dictB]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2022-01-02
    • 2011-12-20
    相关资源
    最近更新 更多