2013-11-22 5 views
0

Мы использовали AFNetworking только для загрузки изображений, как это:AFNewtorking загрузки изображений из Amazon S3

[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"); 
}]; 

и кажется, что он не получает возвращаемый тип, что он ожидает. Он говорит: Expected content type image/png, got binary/octet-stream Я вынимаю изображение из Amazon S3, поэтому не знаю, могу ли я управлять типом.

+0

Какая версия AFNetworking? Это простое решение, но доступные решения зависят от того, какую версию вы используете. –

+0

Я использую 1.0. Я решил исправить исправление вызова 'approContentTypes'. – CaseyB

+0

Наверное, лучше всего подходит для правильного Content-type на ваших изображениях на S3, если это возможно. –

ответ

3

Я не смог изменить тип данных, поэтому я перепробовал метод acceptableContentTypes в AFNetworking, добавив следующие файлы в свой проект.

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 
+0

Вы, кажется, переопределяете метод с категорией, в то время как это нормально работает, Apple говорит, что это поведение не определено. –

0

AFNetworking предоставляет способ для добавления приемлемых типов контента в 1.3.3, я не что другие версии поддерживают это

[AFImageRequestOperation addAcceptableContentTypes:[NSSet setWithObjects:@"binary/octet-stream", nil]]; 
Смежные вопросы