响应序列化失败与 Alamofire [英] responseSerializationFailed with Alamofire
本文介绍了响应序列化失败与 Alamofire的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
import UIKit
import Alamofire
import SwiftyJSON
class LoginViewController: UIViewController {
@IBOutlet weak var urlTextFiled: UITextField!
@IBOutlet weak var emailTextFiled: UITextField!
@IBOutlet weak var passwordTextFiled: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
guard let email = emailTextFiled.text, !email.isEmpty else {
return
}
guard let password = passwordTextFiled.text, !password.isEmpty else {
return
}
let db = "mohanad"
let url = "http://176.58.117.249/web/session/authenticate"
let parameters: [String: Any] = [
"db": db,
"login": email,
"password": password ,
]
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: nil)
.validate(statusCode: 200..<600)
.responseJSON { response in
switch response.result
{
case .failure(let error):
print(error)
case .success(let value):
print(value)
}
}
}
}
打印以下错误:
responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840字符 0 周围的值无效." UserInfo={NSDebugDescription=字符 0 周围的值无效.}))
responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))
推荐答案
试试这个
参数:
let parameters: [String: Any] = [
"jsonrpc":"2.0",
"method":"call",
"params": [
"db": db,
"login": "mohanad@amana.ps",
"password": "mohanad123",
]
]
请求.使用 encoding: JSONEncoding.default
,因为你有传递原始值.
request. use a encoding: JSONEncoding.default
, because you have pass Raw value.
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil)
.validate(statusCode: 200..<600)
.responseJSON { response in
switch response.result
{
case .failure(let error):
if let data = response.data {
print("Print Server Error: " + String(data: data, encoding: String.Encoding.utf8)!)
}
print(error)
case .success(let value):
print(value)
}
}
你的api给了我这种类型的数据
your api give me this type of data in this
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<title>400 Bad Request</title>\n<h1>Bad Request</h1>\n<p>Session expired (invalid CSRF token)</p>\n"
这篇关于响应序列化失败与 Alamofire的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文