使用消息 'Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType' 从存储中获取图像时出错
Error fetch image from storage with message 'Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType'
我尝试从 Firebase 存储中获取图像,但出现错误消息:
Alamofire.AFError.responseValidationFailed(reason: 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: "application/json")
我可以通过浏览器下载这张图片。
我的图片有 MIME-type 'image/jpeg':
我发现了同样的情况:
- Response Content-Type was missing and acceptable content types
- Make sure you set alamofire acceptable content types
- Image Response Serializers
这些提示没有帮助我修复错误。
pod 版本:
- Alamofire:5.0.2
- AlamofireImage 4.0.2
最初我使用AlamofireImage: productImageView.af.setImage(withURL: url)
,但没有用。然后我开始使用 Alamofire。在请求中我传递 MIME-type image/jpeg 就像 Content-Type:
我决定使用这种方法修复错误,但出现相同的错误,我不明白为什么(from docs):
如果你能在error-message中看到我有:
responseContentType: "application/json"
那么获取图片有什么副作用吗?我到底做错了什么?
首先,您的请求 headers 与响应是否有效无关,因此添加 image/jpeg
也无济于事。其次,您的回复是 return 和 application/json
内容类型,因此将 image/jpeg
添加到可接受的内容类型将无济于事(并且 image/jpeg
已经可以接受)。 (顺便说一句,你需要 import AlamofireImage
才能让 addAcceptableImageContentTypes
工作。)
最后,您应该确保获得预期的响应,因为 application/json
内容类型意味着您获得的是 JSON body,而不是图像来回你的要求。当我请求你发布的 URL 时,我得到了这个 JSON 响应:
{
"error": {
"code": 400,
"message": "Invalid HTTP method/URL pair."
}
}
所以您很可能需要仔细检查您应该如何提出请求。
Link 应该是
https://firebasestorage.googleapis.com/v0/b/projectname/o/image.png?alt=media&token=auth_token
将项目名称、图像名称和令牌替换为您的
我尝试从 Firebase 存储中获取图像,但出现错误消息:
Alamofire.AFError.responseValidationFailed(reason: 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: "application/json")
我可以通过浏览器下载这张图片。
我的图片有 MIME-type 'image/jpeg':
我发现了同样的情况:
- Response Content-Type was missing and acceptable content types
- Make sure you set alamofire acceptable content types
- Image Response Serializers
这些提示没有帮助我修复错误。
pod 版本:
- Alamofire:5.0.2
- AlamofireImage 4.0.2
最初我使用AlamofireImage: productImageView.af.setImage(withURL: url)
,但没有用。然后我开始使用 Alamofire。在请求中我传递 MIME-type image/jpeg 就像 Content-Type:
我决定使用这种方法修复错误,但出现相同的错误,我不明白为什么(from docs):
如果你能在error-message中看到我有:
responseContentType: "application/json"
那么获取图片有什么副作用吗?我到底做错了什么?
首先,您的请求 headers 与响应是否有效无关,因此添加 image/jpeg
也无济于事。其次,您的回复是 return 和 application/json
内容类型,因此将 image/jpeg
添加到可接受的内容类型将无济于事(并且 image/jpeg
已经可以接受)。 (顺便说一句,你需要 import AlamofireImage
才能让 addAcceptableImageContentTypes
工作。)
最后,您应该确保获得预期的响应,因为 application/json
内容类型意味着您获得的是 JSON body,而不是图像来回你的要求。当我请求你发布的 URL 时,我得到了这个 JSON 响应:
{
"error": {
"code": 400,
"message": "Invalid HTTP method/URL pair."
}
}
所以您很可能需要仔细检查您应该如何提出请求。
Link 应该是
https://firebasestorage.googleapis.com/v0/b/projectname/o/image.png?alt=media&token=auth_token
将项目名称、图像名称和令牌替换为您的