AFNetworking + UIImageView изображение заполнителя отображается, но не изображение URL - PullRequest
7 голосов
/ 27 февраля 2012

Я пытаюсь использовать вызов AFNetworking UIImageView для загрузки изображений с URL-адреса, как показано ниже:

[self.image setImageWithURL:[NSURL URLWithString:feed.imageURL] placeholderImage:     [UIImage imageNamed:@"logo"]];

Изображение заполнителя всегда отображается, но фактическое изображение из «feed.imageURL» никогда не отображаетсяделает.Я проверил, что URL действительно правильный.Я даже жестко запрограммировал его, чтобы убедиться, и все еще ничего.

Моя основная настройка приложения - это контроллер вкладок ... и в viewDidLoad я вызываю метод "fetchFeed", который выполняет HTTP-запрос для сбора моих данных JSON.

Мой блок запроса выглядит так:

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                    JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id JSON) {
                                         [self parseDictionary:JSON];
                                         isLoading = NO;
                                         [self.tableView reloadData];

                                         } failure:^(NSURLRequest *request,   NSHTTPURLResponse *response, NSError *error, id JSON) {
                                             NSLog(@"Error: %@", error);
                                             [self showNetworkError];
                                             isLoading = NO;
                                             [self.tableView reloadData];
                                         }];
operation.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
[queue addOperation:operation];

Ответы [ 5 ]

9 голосов
/ 28 февраля 2012

Оказывается, сервер, с которого я запрашивал изображение, отправлял content-type "image/jpg", и по умолчанию AFNetworking не поддерживает этот тип файла.

Я изменил метод класса в AFImageRequestOperation, чтобы он выглядел так:

+ (NSSet *)defaultAcceptableContentTypes {
return [NSSet setWithObjects:@"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", @"image/jpg", nil];
}

и это исправило мою проблему.

2 голосов
/ 12 декабря 2013

AFNetworking не поддерживает image / jpg MIME TYPE по умолчанию.

Вы можете поддерживать его без изменения библиотеки AFNetworking

[AFImageRequestOperation addAcceptableContentType:@"image/jpg"];
2 голосов
/ 26 июня 2013

Вы можете принять то, что content-type вы хотите с помощью этой библиотеки, просто изменив request следующим образом:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];

И вызвать метод AFNetworking:

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                     JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id JSON) {
                                     } failure:^(NSURLRequest *request,   NSHTTPURLResponse *response, NSError *error, id JSON) {
                                     }];

Таким образом, вы сможете переопределить content-type без изменения библиотеки.

0 голосов
/ 01 февраля 2013

У меня была похожая проблема, но оказалось, что я передаю URL, в котором есть пробелы. Когда я правильно закодировал URL, используя stringByAddingPercentEscapesUsingEncoding:, теперь загружаются изображения.

0 голосов
/ 27 февраля 2012

Все операции, которые манипулируют пользовательским интерфейсом, должны выполняться в основном потоке.Поэтому вам может понадобиться использовать «executeSelectorOnMainThread:» при перезагрузке данных таблицы в блоке завершения.

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]
...