Alamofire: код состояния: 404, но response.result = УСПЕХ

Созданный на 27 окт. 2015  ·  3Комментарии  ·  Источник: Alamofire/Alamofire

1

response serializer support

Самый полезный комментарий

Вы не проверяете код состояния ответа, поэтому вполне возможно, что ошибка 404 вернет вам случай .Success . Все, что делает сериализатор responseData , это подтверждает, что ошибки не было (которой не будет, поскольку вы не проверяете код состояния ответа) или что данные существуют.

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

В вашем случае вы получаете 404, который не выдает ошибку, и сервер возвращает данные. Таким образом, ваш сериализатор responseData работает успешно. Если вы ожидаете, что ошибка 404 всегда будет выдавать ошибку, вам следует дополнительно использовать метод .validate(statusCode: [200]) перед сериализатором responseData . Больше информации в разделе проверки README.

В будущем подобные вопросы лучше подходят для Stack Overflow с тегом alamofire . Мы используем GitHub для ошибок и запросов функций. 🍻


Из нашего руководства по взносам

Задавать вопросы

Мы не используем GitHub в качестве форума поддержки. По любым вопросам использования, не относящимся к самому проекту, задавайте их на Stack Overflow . Поступая таким образом, вы с большей вероятностью быстро решите свою проблему и позволите любому другому человеку, задавшему тот же вопрос, найти ответ. Это также позволяет сопровождающим сосредоточиться на улучшении проекта для других.

Все 3 Комментарий

Вы не проверяете код состояния ответа, поэтому вполне возможно, что ошибка 404 вернет вам случай .Success . Все, что делает сериализатор responseData , это подтверждает, что ошибки не было (которой не будет, поскольку вы не проверяете код состояния ответа) или что данные существуют.

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

В вашем случае вы получаете 404, который не выдает ошибку, и сервер возвращает данные. Таким образом, ваш сериализатор responseData работает успешно. Если вы ожидаете, что ошибка 404 всегда будет выдавать ошибку, вам следует дополнительно использовать метод .validate(statusCode: [200]) перед сериализатором responseData . Больше информации в разделе проверки README.

В будущем подобные вопросы лучше подходят для Stack Overflow с тегом alamofire . Мы используем GitHub для ошибок и запросов функций. 🍻


Из нашего руководства по взносам

Задавать вопросы

Мы не используем GitHub в качестве форума поддержки. По любым вопросам использования, не относящимся к самому проекту, задавайте их на Stack Overflow . Поступая таким образом, вы с большей вероятностью быстро решите свою проблему и позволите любому другому человеку, задавшему тот же вопрос, найти ответ. Это также позволяет сопровождающим сосредоточиться на улучшении проекта для других.

я действительно ценю

Я борюсь с этой проблемой... Большое спасибо.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги