swift2 alamofire,错误代码=-6006“JSON无法序列化

n9vozmp4  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(228)

我有一个函数,它只对UIButton执行alamofire调用,调用的是我的Rails API,它使用的是JSON。
我将Swift 2、Alamofire 3、XCode 7和Rails 4用于部署到Heroku的API
当我启动这个函数时,我总是得到这个错误:
alamofire。error Code=-6006“JSON无法序列化。输入数据为空或零长度。
下面是我的代码:

@IBAction func Save(sender: AnyObject) {

    let postsEndpoint: String = "https://APIURL"
    let parameters = [
        "users": [
            "name": "James McHarty",
            "avatar": "Some binary data",
            "post": [
                "title": "First Test Post",
                "body": "This is the first test post for the API",
                "liked": "8", //will make INT later
                "img": "more binary data"
            ]
        ]
    ]

    Alamofire.request(.POST, postsEndpoint, parameters: parameters, encoding: .JSON)
        .responseJSON { response in
            guard response.result.error == nil else {
            // got an error in getting the data, need to handle it
            print(response.result.error!)
            return
        }

    }

    print("func'd")

}
gwbalxhn

gwbalxhn1#

这不是Alamofire或swift错误,服务器返回的响应不是JSON格式。您可以打印出响应数据并检查其中的错误。
尝试这个代码来打印出我们的服务器数据,以方便识别错误并解决这个问题。

Alamofire.request("Your url").responseJSON(completionHandler: { (response) in
    switch response.result {
    case .success(let value):
        break

    case .failure(let error):
        print("\n\n===========Error===========")
        print("Error Code: \(error._code)")
        print("Error Messsage: \(error.localizedDescription)")
        if let data = response.data, let str = String(data: data, encoding: String.Encoding.utf8){
            print("Server Error: " + str)
        }
        debugPrint(error as Any)
        print("===========================\n\n")
    }

})
hs1rzwqc

hs1rzwqc2#

服务器传回的回应不是JSON格式。您可以先使用工具来测试要求。
打印出来的错误代码不是HTTP错误代码,因为解析JSON失败

eqqqjvef

eqqqjvef3#

您需要检查mimeType,它将是“text/plain”而不是“application/json”。这就是JSONSerialization类无法解析数据的原因。

相关问题