ASIHTTPRequest - Запрос:Получать делегаты от нескольких запросов в сетевой очереди
-
20-08-2019 - |
Вопрос
Я использую ASINetworkQueue для отправки двух запросов, которые находятся в очереди.Моя проблема в том, что я не могу получать уведомления, когда запрос выполнен с ошибкой.
Код:
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[networkQueue setUploadProgressDelegate:self.progressIndicator];
[networkQueue setDelegate:self];
[networkQueue setQueueDidFinishSelector:@selector(queueDidFinish)];
NSURL *urlAttachment = [NSURL URLWithString:@"http://localhost/test1.xml"]];
ASIFormDataRequest *requestFile = [[[ASIFormDataRequest alloc] initWithURL:urlAttachment] autorelease];
[requestFile setFile:filePath forKey:@"attachment[test]"];
[requestFile setDidFailSelector:@selector(test1WentWrong)];
[requestFile setDidFinishSelector:@selector(test1Done)];
[networkQueue addOperation:requestFile]; //queue is an NSOperationQueue
NSURL *url = [NSURL URLWithString:@"http://localhost/test2.xml"]];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:test.filename forKey:@"filename[test]" ];
[request setDidFailSelector:@selector(test2WentWrong)];
[request setDidFinishSelector:@selector(test2Done)];
[networkQueue addOperation:request]; //queue is an NSOperationQueue
[networkQueue go];
test1WentWrong, test1Done, test2WentWrong, test2Done не вызываются. Хотя запрос выполняется нормально и вызывается queueDidFinish .
Решение
Вам нужно установить делегирование отдельных запросов, а не очереди.
По сути, если вы устанавливаете селекторы didFinish и didFail в очереди, вызывается делегат очереди.Если вы задаете их в запросе, вызывается делегат запроса (вы также можете сделать и то, и другое, и в этом случае вызываются оба).
В вашем случае, когда вы хотите использовать один и тот же делегат для обоих запросов, но разные селекторы для didFail / didFinish , я вижу, что было бы разумно вызвать делегат очереди, если вы не установили делегат для запроса.Возможно, мне следует добавить вот что...:)
Ben