2016-08-18 7 views
0

У меня возникли проблемы с получением изображения с S3 с использованием назначенного URL-адреса и AFNetworking 3.0. Я могу получить изображение, используя NSMutableURLRequest и NSURLSession, но я получаю ошибку 403, когда использую AFHTTPSessionManager и тот же NSMutableURLRequest. (Я действительно хочу загрузить изображение, просто вызвав setImageWithURLRequest, который также дал мне ошибку 403, но я написал этот код, который использует AFHTTPSessionManager, чтобы попытаться отладить проблему.) Что я мог делать с AFNetworking?GET успешно работает с NSURLSession, но не работает с AFHTTPSessionManager

let request = NSMutableURLRequest() 
request.HTTPMethod = "GET" 
request.URL = coverPhotoUrl // A presigned url to an image on S3 

// The operation succeeds if I uncomment the NSURLSession line 
// and comment out the AFHTTPSessionManager line. 
//NSURLSession.sharedSession().dataTaskWithRequest(request) { 
AFHTTPSessionManager().dataTaskWithRequest(request) { 
    date, response, error in 
    if let error = error { 
     Log.error?.message("request failed: \(error.localizedDescription)") 
    } else { 
     Log.debug?.message("request succeeded.") 
    } 
} 
.resume() 

ответ

0

AFNetworking не удалось выполнить запрос из-за проблем с типом контента. setImageWithURL работал после того, как я изменил тип содержимого файлов S3 из двоичного/октета в image/jpeg.

Получение S3 для установки типа содержимого также было затруднительным. В случае, если это будет полезно кому-либо другому, S3 игнорирует тип содержимого в моих запросах PUT, пока не укажу длину содержимого. Я просто использовал фиктивную длину 1 при создании назначенного URL-адреса, несмотря на то, что фактические файлы намного длиннее.

 Смежные вопросы

  • Нет связанных вопросов^_^