快速登录到json API

快速登录到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

my API接受以下JSON登录:

{ "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仍以错误响应。