AFNewtorking从Amazon S3加载图像

我们只使用AFNetworking来加载像这样的图像:

[thumbnailImage setImageWithURL:_item.thumbnailUrl]; 

它工作正常。 但是现在我们已经停止了停止工作的其余项目。 这只是显示背景颜色。 所以我尝试使用这个,它加载占位符,但从来没有加载图像。

 UIImage* placeholder = [UIImage imageNamed:@"placeholder"]; [thumbnailImage setImageWithURL:_item.thumbnailUrl placeholderImage:placeholder]; 

我想我可能会看到什么问题,所以我试了一下:

 NSURLRequest* urlRequest = [NSURLRequest requestWithURL:_item.thumbnailUrl cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30]; [thumbnailImage setImageWithURLRequest:urlRequest placeholderImage:[UIImage imageNamed:@"placeholder"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { NSLog(@"Loaded Image"); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { NSLog(@"Failed to load Image"); }]; 

看来它没有得到它所期望的返回types。 它说Expected content type image/png, got binary/octet-stream我从亚马逊S3拉图像,所以我不知道我是否有控制的types。

我无法改变数据types,所以我重写了AFNetworking中的acceptableContentTypes方法,方法是将以下文件添加到我的项目中。

AFImageRequestOperation + OctetMIMEType.h

 // // AFImageRequestOperation+OctetMIMEType.h // iQ.fileShare // // Created by Poole, Patrick on 4/25/13. // // #import "AFImageRequestOperation.h" @interface AFImageRequestOperation (OctetMIMEType) @end 

AFImageRequestOperation + OctetMIMEType.m

 // // AFImageRequestOperation+OctetMIMEType.m // iQ.fileShare // // Created by Poole, Patrick on 4/25/13. // // #import "AFImageRequestOperation+OctetMIMEType.h" @implementation AFImageRequestOperation (OctetMIMEType) + (NSSet *)acceptableContentTypes { return [NSSet setWithObjects:@"binary/octet-stream",@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil]; } @end 

AFNetworking提供了一种在1.3.3中添加可接受的内容types的方法,我不确定其他版本是否支持这一点

 [AFImageRequestOperation addAcceptableContentTypes:[NSSet setWithObjects:@"binary/octet-stream", nil]];