Загрузка изображений с помощью фреймворка AlamofireImage с Content-Type: "двоичный / октетный поток"
Я пытаюсь загрузить изображения с сервера Amazon S3 через платформу AlamofireImage.
Изображения на сервере S3 сохраняются с помощью "Content-Type" = "двоичный / октетный поток".
В начале я получил ошибку:
Failed to validate response due to unacceptable content type.
Итак, я попытался изменить / обновить запрос заголовка HTTP для поддержки двоичного /octet-stream'
Я обновил метод:
private func URLRequestWithURL(URL: NSURL) -> NSURLRequest
В файле UIImageView+AlamofireImage.swift:
private func URLRequestWithURL(URL: NSURL) -> NSURLRequest {
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.addValue("binary/octet-stream", forHTTPHeaderField: "Content-Type")
return mutableURLRequest
}
И все еще не работает, Сразу после того, как я добавил:
let contentTypes: Set<String> = ["Content-Type", "binary/octet-stream"]
Request.addAcceptableImageContentTypes(contentTypes)
Проблема была решена, но мне действительно не нравится тот факт, что я изменил частный метод в платформе AlamofireImage.
Интересно, есть ли элегантный способ решения этой проблемы, учитывая, что я не могу изменить образы 'Content-Type' на сервере S3.
Спасибо
2 ответа
В Swift 3.2 все немного по-другому.
let request = URLRequest(url: URL)
DataRequest.addAcceptableImageContentTypes(["binary/octet-stream"])
AlamoDownloader.shared.imageDownloader.download(request){ response in
DataRequest является публичным классом Alamofire.
Выполнение Request.addAcceptableImageContentTypes(["binary/octet-stream"]) должно быть всем, что вам нужно, чтобы заставить его работать.
Если вы использовали af_setImageWithURL, возникла ошибка, заключающаяся в том, что она не использовала acceptImageContentTypes. AlamofireImage 2.2.0 исправляет это.