快速登录到json API
my API接受以下JSON登录:快速登录到json API,json,swift,alamofire,Json,Swift,Alamofire,my API接受以下JSON登录: { "operation" : "login", "user": { "name": "username", "password": "password" } } 在Xcode中,我已经尝试过: let username : String = textFieldUserName.text! let password : String = textFieldPassword.text! let param = "{ \"operation\" : \"log
{ "operation" : "login", "user": { "name": "username", "password": "password" } }
在Xcode中,我已经尝试过:
let username : String = textFieldUserName.text!
let password : String = textFieldPassword.text!
let param = "{ \"operation\" : \"login\", \"user\": { \"username\": \"" + username + "\", \"password\": \"" + password + "\" } }"
let dict = convertToDictionary(text: param)
//making a post request
Alamofire.request(URL_USER_LOGIN, method: .post, parameters: dict).responseJSON{
response in
//printing response
print(response)
print (param)
//other handling removed
}
要转换为字典的函数:
func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}
}
return nil
}
邮递员的要求是:邮寄到
请求正文设置为raw并包含:{“操作”:“登录”、“用户”:{“名称”:“用户名”、“密码”:“密码”}}
但是我的API的响应总是错误参数的错误消息。。。如果我将参数从控制台粘贴到Postman并发出请求,一切正常
也许有人能帮我吗?你可以用一种更简单的方法,只需要查字典就可以了
var dic: [String: Any] = [:]
dic["operation"] = "login"
let user: [String: Any] = ["name": "username", "password": "password"]
dic["user"] = user
Alamofire.request(URL_USER_LOGIN, method: .post, parameters: dic, encoding: JSONEncoding.default).responseJSON { ... }
您似乎错过了编码?您不应该从
字符串
手动生成JSON对象Alamofire
接受一个字典
作为请求主体,因此使用字典
,不要生成字符串
,将其转换为数据
,然后尝试将其解码为JSON
编码数据,因为它从来都不是正确的JSON
数据
let requestParameters = ["operation":"login","user":["name":"username","password":"password"]]
Alamofire.request(URL_USER_LOGIN, method: .post, parameters: requestParameters, encoding: JSONEncoding.default).responseJSON{...
尝试不序列化。我已复制了您的代码段,但仍然无法工作。。。API以错误响应…我的API以“错误的参数”响应(可能是错误的用户名或密码或错误的请求)具有相同参数的请求是否从另一个来源(例如邮递员)工作?如果我将请求参数打印到控制台,我会得到:“[“用户”:[“学校id”:“12344-s”,“密码”:“tom”],“操作”:“登录”]“它无法工作,因为它与所需的格式不匹配(请参见问题中的内容),除了您将名称更改为school_id之外,该格式与您问题中的格式完全相同。很抱歉,此代码无法工作:(API仍以错误响应。