Alamofire: código de status: 404, mas response.result = SUCCESS

Criado em 27 out. 2015  ·  3Comentários  ·  Fonte: Alamofire/Alamofire

1

response serializer support

Comentários muito úteis

Você não está validando o código de status da resposta, portanto, é possível que um 404 retorne um caso .Success . Tudo o que o serializador responseData faz é validar que não houve um erro (o que não haverá porque você não está validando o código de status da resposta) ou que os dados existem.

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)
    }
}

No seu caso, você está recebendo um 404 que não está gerando um erro e o servidor está retornando dados. Portanto, seu serializador responseData é bem-sucedido. Se você espera que um 404 sempre gere um erro, você deve usar adicionalmente o método .validate(statusCode: [200]) antes do serializador responseData . Mais informações na Seção de Validação do README.

No futuro, perguntas como essa são mais adequadas para o Stack Overflow com uma tag alamofire . Usamos o GitHub para bugs e solicitações de recursos. 🍻


De nossas Diretrizes de Contribuição

Fazendo perguntas

Não usamos o GitHub como fórum de suporte. Para qualquer dúvida de uso que não seja específica do projeto em si, pergunte no Stack Overflow . Ao fazer isso, você terá mais chances de resolver seu problema rapidamente e permitirá que qualquer outra pessoa com a mesma pergunta encontre a resposta. Isso também permite que os mantenedores se concentrem em melhorar o projeto para outros.

Todos 3 comentários

Você não está validando o código de status da resposta, portanto, é possível que um 404 retorne um caso .Success . Tudo o que o serializador responseData faz é validar que não houve um erro (o que não haverá porque você não está validando o código de status da resposta) ou que os dados existem.

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)
    }
}

No seu caso, você está recebendo um 404 que não está gerando um erro e o servidor está retornando dados. Portanto, seu serializador responseData é bem-sucedido. Se você espera que um 404 sempre gere um erro, você deve usar adicionalmente o método .validate(statusCode: [200]) antes do serializador responseData . Mais informações na Seção de Validação do README.

No futuro, perguntas como essa são mais adequadas para o Stack Overflow com uma tag alamofire . Usamos o GitHub para bugs e solicitações de recursos. 🍻


De nossas Diretrizes de Contribuição

Fazendo perguntas

Não usamos o GitHub como fórum de suporte. Para qualquer dúvida de uso que não seja específica do projeto em si, pergunte no Stack Overflow . Ao fazer isso, você terá mais chances de resolver seu problema rapidamente e permitirá que qualquer outra pessoa com a mesma pergunta encontre a resposta. Isso também permite que os mantenedores se concentrem em melhorar o projeto para outros.

eu realmente aprecio

Estou lutando com este problema... Muito obrigado.

Esta página foi útil?
0 / 5 - 0 avaliações