Ошибка при получении изображения из хранилища с сообщением 'Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType' - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь получить изображение из хранилища Firebase, но появляется сообщение об ошибке:

Alamofire.AFError.responseValidationFailed (причина: Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType (ptableContentTypes [: xbitmap "," image / jpeg "," application / octet-stream "," image / gif "," image / 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 / 7DDCEEA C -ED54-4910-B93D-5E40BF411B80

Я могу загрузить это изображение через браузер.

Мое изображение имеет MIME-тип 'image / jpeg': enter image description here

Я обнаружил такую ​​же ситуацию :

  1. Отсутствует тип содержимого ответа и допустимые типы содержимого
  2. Убедитесь, что вы установили alamofire приемлемые типы содержимого
  3. Сериализаторы ответа изображения

Эти подсказки не помогли мне исправить мою ошибку.

Версия модуля:

  • Alamofire : 5.0.2
  • AlamofireImage 4.0.2

Изначально я использовал AlamofireImage : productImageView.af.setImage(withURL: url), но это не сработало. Затем я начал использовать Alamofire . И в запрос я передаю MIME-тип image / jpeg вроде Content-Type : enter image description here

И я решил использовать этот подход чтобы исправить ошибку, но есть та же ошибка, и я не понимаю, почему ( из документов ): enter image description here

Если вы видите в сообщении об ошибке У меня есть:

responseContentType: "application / json"

Так есть ли побочные эффекты при получении изображения? Что я вообще не так делаю?

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Ссылка должна быть

https://firebasestorage.googleapis.com/v0/b/projectname/o/image.png?alt=media&token=auth_token

заменить имя проекта, имя изображения и токен на ваш

0 голосов
/ 02 марта 2020

Во-первых, заголовки ваших запросов не имеют никакого отношения к тому, является ли ответ действительным, поэтому добавление 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."
  }
}

Так что, скорее всего, вам нужно дважды проверить, как вы должны делать запрос.

...