如何在 Alamofire API 请求的主体中发送嵌套对象?
Posted
技术标签:
【中文标题】如何在 Alamofire API 请求的主体中发送嵌套对象?【英文标题】:How can you send a nested object in the body of an Alamofire API request? 【发布时间】:2020-07-13 15:16:39 【问题描述】:我尝试使用 Alamofire 发出这样的 API 请求:
let param = ["id":"xy", "products":[["quantity":2, "product":["id":123]]]]
Alamofire.request(url, method: .post,
parameters: param, encoding: URLEncoding.default,
headers: ["Accept": "application/json", "Content-Type": "application/json"]).responseJSON ..
我收到了这个回复:
message = "Unexpected token i in JSON at position 0";
statusCode = 400;
我也尝试过这样的请求:
request.httpBody = try! JSONSerialization.data(withJSONObject: param)
我尝试手动执行以下请求以确保它工作正常:
curl -X POST http://url -d'"id":"xy", "products" ["quantity":2,"product":"id":123]' -H'Content-Type: application/json'
根据需要,它给了我这样的回应:
"id":"xy",
"products":[
"quantity":2,
"product":
"id":123
]
【问题讨论】:
提示:既然你有一个工作卷曲,你知道 Alamofire 可以将它的请求打印为卷曲吗?然后你可以比较和发现问题。见***.com/questions/53637437/alamofire-with-d/… 然后就可以看到github.com/Alamofire/Alamofire/blob/master/Source/…放了什么参数,改一下 【参考方案1】:您需要以application/json
发送请求,因此请使用JSONEncoding.default
作为encoding
参数。
Alamofire.request( url, method: .post , parameters: param, encoding: JSONEncoding.default , headers: ["Accept": "application/json",
"Content-Type": "application/json"])
附加组件:此外,您可以从标头参数中删除Content-Type
。 AF
会为您解决这些问题。
【讨论】:
以上是关于如何在 Alamofire API 请求的主体中发送嵌套对象?的主要内容,如果未能解决你的问题,请参考以下文章
图片不会在我的 Alamofire .post 请求中发送到我的后端 - Swift 3
如何在 Alamofire 中使用相同的 API 函数 .PUT 请求更新 JSON
api请求失败时如何在swift alamofire中使用responsedecodable解析错误