响应序列化失败与 Alamofire [英] responseSerializationFailed with Alamofire

查看:38
本文介绍了响应序列化失败与 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": "moh‌​anad123",
            ]
        ]

请求.使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆