alamofire.Código de error=-6006 «JSON no podía ser serializado

Estado trabajando en esto por un momento sin éxito. Tengo una función que va a un UIButton únicamente para realizar alamofire llamadas a mi rails api que utiliza todos JSON.

Estoy usando Swift 2, Alamofire 3, XCode 7 & Rails 4 para mi api, que se implementa a Heroku

Me sale este error cuando ejecuto la función :

alamofire.Código de error=-6006 «JSON no podía ser serializado. Los datos de entrada fue nula o cero de longitud.

Aquí está mi código :

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

}
  • Según el mensaje de error, parece que el servidor no devolver los datos. Intenta hacer la misma solicitud utilizando curl o similar HTTP herramienta? ¿Qué estructura JSON esperas? ¿Por qué son usted seguro de que es un iOS problema y no una Rieles problema?
  • Que fue muy útil, así que me troubleshooted el servidor y se fue con un menor de solicitud (usuario único) y mi servidor aceptó una petición POST y ahora muestra esto al realizar un GET : [{«id»:1,»nombre»:»No McHart»,»avatar»:»algunos binario tonterías»,»mensajes»:[]}]. Esto me lleva a creer que yo estoy haciendo algo mal en los parámetros.
  • Puede que desee cerrar esta pregunta y abrir una nueva Rieles pregunta si el cuerpo de la respuesta no es lo que usted espera que sea.
  • Esto generalmente sucede cuando usted no obtener respuesta válida desde el servidor (idealmente JSON)…En mi caso cuando el servidor se reinicia esto sucede.
  • En mi aplicación, este error se produce al azar. El servidor se está ejecutando, nunca se reinicia. Así que no son capaces de depurar. ¿Cuál podría ser la razón en este caso?
  • Estoy recibiendo una respuesta vacía al azar. No podemos averiguar el problema todavía. A partir de ahora, que parece que es un problema de servidor. Servidor es tirar la respuesta vacía a veces, pero es el momento de tener lugar sólo en el lado del cliente, no de nuestro lado es por eso que no podemos generar este problema. Cualquier ayuda será apreciada.

InformationsquelleAutor James H | 2016-02-13

3 Kommentare

  1. 6

    Esto no es Alamofire o error swift, La respuesta devuelta por el servidor no está en el formato JSON. usted puede imprimir los datos de respuesta y comprobar lo que está mal en esto.

    prueba este código para imprimir nuestro servidor de datos para identificar fácilmente a error y resolver esto.

    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")
        }
    
    })
  2. 3

    La respuesta devuelta por el servidor no está en el formato JSON. Puede utilizar la herramienta de prueba de la primera solicitud.

    De imprimir el código de error no es un código de error HTTP, debido a la falta de resolver JSON

  3. 0

    Usted necesita para comprobar el mimeType será «text/plain» en lugar de «application/json». Es por eso que JSONSerialization clase no es capaz de analizar los datos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea