statusCode应该是2xx,但在swift中是400



我有一个登录API并使用URLSession访问API,但我得到了状态代码400,这是我的代码-

let deviceType = "IOS"
let deviceToken = "654321"
@IBAction func onClickLogIn(_ sender: Any) {
guard let email = self.emailTf.text else {
return
}
guard let password = self.pwdTf.text else {
return
}
let url = URL(string: "http://example/api/login")!
var request = URLRequest(url: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"

let parameters: [String: Any] = [
"username": email,
"password": password,
"deviceType" : deviceType,
"deviceToken" : deviceToken
]
request.httpBody = parameters.percentEncoded()
URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
let response = response as? HTTPURLResponse,
error == nil else {
print("error", error ?? "Unknown error")
return
}

guard (200 ... 299) ~= response.statusCode else {
print("statusCode should be 2xx, but is (response.statusCode)")
print("response = (response)")
return
}
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}


let responseString = String(data: data, encoding: .utf8)
print("responseString = (String(describing: responseString))")
}.resume()


}

当我使用breakPoints并键入PO request.httpBody时,它在httpBody中显示nil,并获得状态代码400,请任何人帮助我在哪里犯了错误

设置响应数据库类型:

"application/x-www-form-urlencoded"多部分/形式数据"application/json""文本/纯文本"text/xml";

询问后端开发人员API类型,是From data API还是Raw Json API.based,您必须执行编码。

你为表单数据写的

这里是带有原始json api实现的post-api

let parameters: [String: AnyObject] = [
"IdQuiz" : 102,
"IdUser" : "iosclient",
"User" : "iosclient",
"List": [
[
"IdQuestion" : 5,
"IdProposition": 2,
"Time" : 32
],
[
"IdQuestion" : 4,
"IdProposition": 3,
"Time" : 9
]
] ]
Alamofire.request(.POST, "http://myserver.com", parameters: parameters, encoding: .JSON)
.responseJSON { request, response, JSON, error in
print(response)
print(JSON)
print(error)
}

相关内容

最新更新