Загрузка изображений с помощью фреймворка 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 исправляет это.

Другие вопросы по тегам