Ошибка при получении изображения из хранилища с сообщением "Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType"
Я пытаюсь получить изображение из хранилища Firebase, но получаю сообщение об ошибке:
Alamofire.AFError.responseValidationFailed(причина: Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType(acceptContentTypes: ["изображение /x-xbitmap", "изображение /jpeg", "приложение / октет-поток", "изображение / gif ico", "image/tiff", "image/x-icon", "image/bmp", "image/x-bmp", "image/x-win-bitmap", "image/png", "image/ " x-ms-bmp"], responseContentType: "application/json")
Мой URL-адрес выглядит так: https://firebasestorage.googleapis.com/v0/b/####/o/executors/o4uAQa158nXTvJ5omuxqcRb0e793/products/7DDCEEAC-ED54-4910-B93D-5E40BF411B80
Я могу скачать это изображение через браузер.
Мое изображение имеет MIME-тип image/jpeg:
Я обнаружил такую же ситуацию:
- Отсутствует тип содержимого ответа, допустимые типы содержимого
- Убедитесь, что вы установили допустимые типы контента alamofire
- Сериализаторы отклика изображения
Эти подсказки не помогли мне исправить ошибку.
Версия модуля:
- Аламофайр: 5.0.2
- AlamofireImage 4.0.2
Изначально я использовал AlamofireImage:productImageView.af.setImage(withURL: url)
, но это не сработало. Затем я начал использовать Alamofire. И в запрос передаю MIME-тип image/jpeg, например Content-Type:
И я решил использовать этот подход для исправления ошибки, но имеет ту же ошибку, и я не понимаю, почему (из документов):
Если вы видите в сообщении об ошибке, у меня есть:
responseContentType: "приложение / json"
Так есть ли побочный эффект для получения изображения? Что я вообще делаю не так?
2 ответа
Ссылка должна быть
https://firebasestorage.googleapis.com/v0/b/projectname/o/image.png?alt=media&token=auth_token
замените имя проекта, имя изображения и токен на свои
Во-первых, заголовки ваших запросов не имеют ничего общего с правильностью ответа, поэтому добавляем image/jpeg
там не поможет. Во-вторых, ваш ответ - вернутьapplication/json
тип содержимого, поэтому добавление image/jpeg
к приемлемым типам контента не поможет (и image/jpeg
уже приемлемо). (Кроме того, вам нужноimport AlamofireImage
получить addAcceptableImageContentTypes
работать.)
В конце концов, вы должны убедиться, что получаете ожидаемый ответ, как application/json
Тип содержимого подразумевает, что вы получаете тело JSON, а не изображение по вашему запросу. Когда я запрашиваю опубликованный вами URL, я получаю этот ответ JSON:
{
"error": {
"code": 400,
"message": "Invalid HTTP method/URL pair."
}
}
Так что, скорее всего, вам нужно дважды проверить, как вы должны делать запрос.