Alamofire: código de estado: 404, pero respuesta.resultado = ÉXITO

Creado en 27 oct. 2015  ·  3Comentarios  ·  Fuente: Alamofire/Alamofire

1

response serializer support

Comentario más útil

No está validando el código de estado de respuesta, por lo que es posible que un 404 le devuelva un caso .Success . Todo lo que hace el serializador responseData es validar que no hubo un error (que no lo habrá, ya que no está validando el código de estado de respuesta) o que los datos existen.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

En su caso, está recibiendo un 404 que no arroja un error y el servidor está devolviendo datos. Por lo tanto, su serializador responseData tiene éxito. Si espera que un 404 arroje siempre un error, debe usar adicionalmente el método .validate(statusCode: [200]) antes del serializador responseData . Más info en la Sección de Validación del README.

En el futuro, preguntas como esta son más adecuadas para Stack Overflow con una etiqueta alamofire . Usamos GitHub para errores y solicitudes de funciones. 🍻


De nuestras Pautas de contribución

Haciendo preguntas

No usamos GitHub como foro de soporte. Para cualquier pregunta de uso que no sea específica del proyecto en sí, pregunte en Stack Overflow . Al hacerlo, será más probable que resuelva rápidamente su problema y permitirá que cualquier otra persona con la misma pregunta encuentre la respuesta. Esto también permite a los mantenedores concentrarse en mejorar el proyecto para otros.

Todos 3 comentarios

No está validando el código de estado de respuesta, por lo que es posible que un 404 le devuelva un caso .Success . Todo lo que hace el serializador responseData es validar que no hubo un error (que no lo habrá, ya que no está validando el código de estado de respuesta) o que los datos existen.

public static func dataResponseSerializer() -> ResponseSerializer<NSData, NSError> {
    return ResponseSerializer { _, _, data, error in
        guard error == nil else { return .Failure(error!) }

        guard let validData = data where validData.length > 0 else {
            let failureReason = "Data could not be serialized. Input data was nil or zero length."
            let error = Error.errorWithCode(.DataSerializationFailed, failureReason: failureReason)
            return .Failure(error)
        }

        return .Success(validData)
    }
}

En su caso, está recibiendo un 404 que no arroja un error y el servidor está devolviendo datos. Por lo tanto, su serializador responseData tiene éxito. Si espera que un 404 arroje siempre un error, debe usar adicionalmente el método .validate(statusCode: [200]) antes del serializador responseData . Más info en la Sección de Validación del README.

En el futuro, preguntas como esta son más adecuadas para Stack Overflow con una etiqueta alamofire . Usamos GitHub para errores y solicitudes de funciones. 🍻


De nuestras Pautas de contribución

Haciendo preguntas

No usamos GitHub como foro de soporte. Para cualquier pregunta de uso que no sea específica del proyecto en sí, pregunte en Stack Overflow . Al hacerlo, será más probable que resuelva rápidamente su problema y permitirá que cualquier otra persona con la misma pregunta encuentre la respuesta. Esto también permite a los mantenedores concentrarse en mejorar el proyecto para otros.

Realmente lo aprecio

Estoy luchando con este problema... Muchas gracias.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

lvandal picture lvandal  ·  3Comentarios

dpstart picture dpstart  ·  3Comentarios

borek2 picture borek2  ·  3Comentarios

matthijsotterloo picture matthijsotterloo  ·  3Comentarios

noear picture noear  ·  3Comentarios