alamofire.error Code=-6006“;无法序列化JSON

alamofire.error Code=-6006“;无法序列化JSON,json,xcode,swift,swift2,alamofire,Json,Xcode,Swift,Swift2,Alamofire,我在这方面工作了一段时间,但没有成功。我有一个函数,它转到一个UIButton,只执行对我的railsapi的alamofire调用,该api使用所有JSON 我使用Swift 2、Alamofire 3、XCode 7和Rails 4作为部署到Heroku的api 当我关闭函数时,不断出现此错误: alamofire.error Code=-6006“JSON无法序列化。输入数据为零或零长度 这是我的密码: @IBAction func Save(sender: AnyObject) {

我在这方面工作了一段时间,但没有成功。我有一个函数,它转到一个
UIButton
,只执行对我的railsapi的alamofire调用,该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")

}

服务器返回的响应不是JSON格式。您可以先使用该工具测试请求


打印出的错误代码不是HTTP错误代码,因为无法解析JSON,这不是ALMOFIRE或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")
    }

})

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

根据错误消息,您的服务器似乎没有发回任何数据。您是否尝试使用
curl
或类似的HTTP工具发出相同的请求?您期望的JSON结构是什么?为什么你确定这是一个iOS问题而不是Rails问题?这是一个有用的输入,所以我对服务器进行了故障排除,并使用了一个较小的请求(仅限用户),我的服务器接受了一个POST请求,现在当我执行GET:[{“id”:1,“name”:“Don McHart”,“avatar”:“一些二进制废话”,“posts”:[]}时显示此信息。这让我相信我在参数方面做错了什么。如果响应主体不是您期望的那样,您可能希望关闭此问题并打开一个新的Rails问题。这通常发生在您没有从服务器获得有效响应时(理想情况下是JSON)…在我的情况下,服务器重新启动时会发生这种情况。在我的应用程序中,这个错误是随机出现的。服务器正在运行,从未重新启动。所以我们无法调试。发生这种情况的原因是什么?