花了几个小时没有成功。
我正在使用Alamofire对后端服务器进行HTTP POST,这需要在请求中提供一些参数。
我已成功命中服务器,但服务器响应500,但未发送任何参数?
我尝试了大多数SO解决方案(更改编码类型,将参数设置为NSDict等),但没有成功。
任何帮助,不胜感激。
PS与Alamofire 4一起使用Swift3
码:
let params: [String: String] = ["deviceID": "Some device ID",
"email": "email","password": "password","userid": "1234",
"username":"gordon"]
let request_params: Parameters = ["LoginUser" : params]
let url = "https://myserver/LogIn" as String
Alamofire.request(url, method: .post, parameters: request_params, encoding: URLEncoding.default, headers: [
"Content-Type": "application/x-www-form-urlencoded"
]).responseString { (response:DataResponse<String>) in
switch(response.result) {
case.success(let data):
print("success",data)
print(response.response)
case.failure(let error):
print("Failed!",error)
}
}
更新:
下面是POST的正文,看起来像是存在问题的地方:
Alamofire POST正文(来自上面的代码)-
(LoginUser%5BdeviceID%5D = 12345&LoginUser%5Bemail%5D = gordon%40test.com&LoginUser%5Buserid%5D = 00000000-0000-0000-0000-000000000000&LoginUser%5Bpassword%5D = testPassword&LoginUser%5Busername%5D = gordon)
它应该类似于(忽略编码值):
这是一个功能齐全的后车身-
LoginUser =%7B%22deviceID%22%3A%22%22%2C%22email%22%3A%22gordon%40test.com%22%2C%22password%22%3A%22testPassword%22%2C%22userid%22%3A %2200000000-0000-0000-0000-000000000000%22%2C%22用户名%22%3A%22gordon%22%7D
如您所见,Alamofire帖子似乎将LoginUser连接到每个属性的开头?在启动时还缺少LoginUser =?
最佳答案
尝试使用JSONEncoding.default
而不是URLEncoding.default
关于ios - POST中Alamofire 4缺少参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47211363/