Проблема с сетевым запросом ASIHTTPRequest
-
11-09-2019 - |
Вопрос
Я хочу использовать библиотеку ASIHTTPRequest для загрузки некоторых файлов, я тестирую с их кодом, и он не работает, в то время как тот же код работает с их образцом
это мой код для вызова их представления
QueueViewController *queueViewController = [[Выделение QueueViewController] initWithNibName:@пакет "Queue": ноль];[self.view Добавляет SUBVIEW:queueViewController.view];
Это код для выполнения запроса
- (IBAction)fetchThreeImages:(id)sender
{
[imageView1 setImage:nil];
[imageView2 setImage:nil];
[imageView3 setImage:nil];
[networkQueue cancelAllOperations];
[networkQueue setDownloadProgressDelegate:progressIndicator];
[networkQueue setRequestDidFinishSelector:@selector(imageFetchComplete:)];
[networkQueue setShowAccurateProgress:[accurateProgress isOn]];
[networkQueue setDelegate:self];
ASIHTTPRequest *request;
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/logo.png"]] autorelease];
[networkQueue addOperation:request];
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/trailsnetwork.png"]] autorelease];
[networkQueue addOperation:request];
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/sharedspace20.png"]] autorelease];
[networkQueue addOperation:request];
[networkQueue go];
}
- (void)imageFetchComplete:(ASIHTTPRequest *)request
{
UIImage *img = [UIImage imageWithData:[request responseData]];
if (img) {
if ([imageView1 image]) {
if ([imageView2 image]) {
[imageView3 setImage:img];
} else {
[imageView2 setImage:img];
}
} else {
[imageView1 setImage:img];
}
}
}
Похоже, что очередь настраивается правильно, но метод imageFetchComplete не вызывается при завершении загрузки.
Решение 2
Я исправил проблему, проблема заключалась в том, что я не выделял networkQueue.
Я выделил networkQueue в awakefromnib, который не вызывался.Итак, я выделяю networkQueue в методе нажатия кнопки.Это устранило проблему.
Другие советы
Попробуйте установить requestDidFailSelector
на вашем примере ASINetworkQueue
, а также настройка didFinishSelector
и didFailSelector
на каждом экземпляре ASIHTTPRequest
.Вызовите NSLog() из каждого из этих методов обратного вызова в вашем делегате, чтобы увидеть, что происходит.
Обратите внимание, что, включив showAccurateProgress
на вашем ASINetworkQueue
, дополнительный запрос HEAD выполняется для каждого запроса, обрабатываемого очередью.Иногда это может быть далеко не идеально в мобильном контексте.