web-dev-qa-db-ja.com

alamofire.error Code = -6006 "JSONをシリアル化できませんでした

これに少し取り組んできましたが、成功しませんでした。すべてのJSONを使用するRails apiへのalamofire呼び出しを実行するためだけにUIButtonに移動する関数があります。

私はSwift 2、Alamofire 3、XCode 7を使用しています&&Rails 4がHerokuにデプロイされている私のAPIに

関数を実行すると、このエラーが発生し続けます。

alamofire.error Code = -6006「JSONをシリアル化できませんでした。入力データがnilまたはゼロ長でした。

これが私のコードです:

@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")

}
15
James H

これは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")
    }

})
6
AshvinGudaliya

サーバーから返された応答は、JSON形式ではありません。このツールを使用して、最初にリクエストをテストできます。

JSONの解決に失敗したため、エラーコードの出力はHTTPエラーコードではありません

3
TBXark VFanx

MimeTypeが「application/json」ではなく「text/plain」になることを確認する必要があります。 JSONSerializationクラスがデータを解析できないのはそのためです。

0
Yogendra Singh