带有嵌套参数的 Alamofire POST 请求不返回任何内容
Posted
技术标签:
【中文标题】带有嵌套参数的 Alamofire POST 请求不返回任何内容【英文标题】:Alamofire POST request with nested parameters returns nothing 【发布时间】:2018-09-13 13:19:21 【问题描述】:您好,我正在尝试将 Alamofire 用于我的 HTTP 请求。它正在使用不包含任何嵌套参数的参数。通常情况下,我的 url 可以在 Google Chrome 上使用。
http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp=%7b%22rfName%22:%22RF_ABC%22%7d&token=123 以上网址的解码版本是
http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp="rfName":"RF_ABC"&token=123
当我将它粘贴到任何浏览器时,它都可以正常工作。但是,当我尝试使用 Alamofire 发送以下帖子请求时
let parameters3: [String: Any] = [
"cmd": "ext_getReferanceData",
"jp": [
"rfName": "RF_ABC"
],
"token": "123"
]
Alamofire.request("http://111.222.33.4:12345/my_server/dispatch", method: .get, parameters: parameters3, encoding: JSONEncoding.default).responseJSON (response) in
它正在返回
失败: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)
可能是我发送参数错误的原因还是我遗漏了什么?
编辑:我还检查了有关错误的其他问题,但问题在于我尝试发送的参数,因为参数中有 " 和 但我无法在请求中发送。
【问题讨论】:
当前你的 alamofire 方法 .GET 在代码中,请将其更改为 .POST 即可。 @KeyurFaldu 不,它也不适用于 .POST。responseString
而不是 responseJSON
ALAMOFIRE : responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)的可能重复
***.com/a/51537003/8294374
【参考方案1】:
您是否考虑过打印正在发送的响应并确认它确实是您要发送的内容?
你可以做一些改进
-
制作方法.post
尝试使用 .validate() 来增加可靠性
我的做法是这样的:
let submissionURL = URL(string: "https://blablabla.com/script.php")
sendAlamofireRequest(submissionURL: submissionURL!, parameters: parameters, chosenTrackerStr: chosenTrackerString) //function call
//function declaration
func sendAlamofireRequest(submissionURL: URL, parameters: Parameters, chosenTrackerStr: String)
Alamofire.request(submissionURL, method: .post, parameters: parameters, encoding: JSONEncoding.default).validate().responseString() (response) in
//actual code goes here
也许尝试使用 alamofire 请求并查看其文档以查看建议的方法:)
【讨论】:
以上是关于带有嵌套参数的 Alamofire POST 请求不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务
带有 CRUD/Rest 的 Alamofire POST 参数
发送带有参数的 Alamofire 请求以及 HTTP 正文中的图像