1

我尝试从 Firebase 存储中获取图像,但有错误消息:

Alamofire.AFError.responseValidationFailed(原因: Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType(acceptableContentTypes: ["image/x-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: "应用程序/json")

我的网址如下所示:https ://firebasestorage.googleapis.com/v0/b/####/o/executors/o4uAQa158nXTvJ5omuxqcRb0e793/products/7DDCEEAC-ED54-4910-B93D-5E40BF411B80

我可以通过浏览器下载这张图片。

我的图像具有 MIME 类型的“图像/jpeg”:在此处输入图像描述

我发现了同样的情况:

  1. 缺少响应 Content-Type 和可接受的内容类型
  2. 确保您设置了 alamofire 可接受的内容类型
  3. 图像响应序列化器

这些提示并没有帮助我修复我的错误。

吊舱版本:

  • 阿拉莫菲尔:5.0.2
  • AlamofireImage 4.0.2

最初我使用AlamofireImage : productImageView.af.setImage(withURL: url),但它没有用。然后我开始使用Alamofire。并在请求中传递 MIME 类型的图像/jpeg,如Content-Type在此处输入图像描述

我决定使用这种方法来修复错误,但有同样的错误,我不明白为什么(来自文档): 在此处输入图像描述

如果您可以在错误消息中看到我有:

响应内容类型:“应用程序/json”

那么获取图像有什么副作用吗?我做错了什么?

4

2 回答 2

1

链接应该是

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

将 projectname 、 image name 和 token 替换为您的

于 2020-03-03T09:11:42.750 回答
-1

首先,您的请求标头与响应是否有效无关,因此添加image/jpeg没有帮助。其次,您的响应是返回application/json内容类型,因此添加image/jpeg到可接受的内容类型将无济于事(并且image/jpeg已经可以接受)。(顺便说一句,你需要import AlamofireImageaddAcceptableImageContentTypes上班。)

最后,您应该确保获得您期望的响应,因为application/json内容类型意味着您获得的是 JSON 正文,而不是来自您的请求的图像。当我请求您发布的 URL 时,我收到以下 JSON 响应:

{
  "error": {
    "code": 400,
    "message": "Invalid HTTP method/URL pair."
  }
}

因此,您很可能需要仔细检查您应该如何提出请求。

于 2020-03-02T05:43:21.627 回答