您好,我正在尝试将Alamofire用于我的HTTP请求。它正在使用不包含任何嵌套参数的参数。通常,我的网址可以在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)
原因可能是我发送参数错误或缺少什么?
编辑:我还检查了有关该错误的其他问题,但问题与我尝试发送的参数有关,因为参数中包含“和{,但我无法发送请求。
答案 0 :(得分:0)
您是否考虑过打印正在发送的响应并确认它确实是您要发送的内容?
您可以做一些改善的事情
我的操作方式类似于:
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请求并查看其文档以查看建议的方法:)