2009-06-26 1 views
1

Я использую ASINetworkQueue для отправки двух запросов, которые находятся в очереди. Моя проблема в том, что я не могу получать уведомления, когда запрос не выполнен/выполнен.ASIHTTPRequest: получение делегатов из нескольких запросов в сетевой очереди

Код:

[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.

ответ

4

Вам нужно установить делегат от отдельных запросов, а не в очередь.

В принципе, если вы задали селектор didFinish и didFail в очереди, вызывается делегат очереди. Если вы установите их в запросе, вызывается делегат запроса (вы также можете сделать оба варианта, и в этом случае оба вызываются).

В вашем случае, когда вы хотите использовать один и тот же делегат для обоих запросов, но разные селекторы для didFail/didFinish, я вижу, что было бы целесообразно, чтобы делегат очереди вызывался, если вы не установили делегат для запроса. Возможно, я должен добавить это ... :)

Ben

+0

Ben, большое спасибо за ваш ответ. Я был слепым ;-) Добавление делегата отлично работало. Спасибо за такую ​​замечательную упаковку, как ASIHTTPRequest. Это очень удобно и удобно использовать. Мне это нравится. – Stefan

+0

@Stefan Я также сталкиваюсь с вашей проблемой. И не могу это исправить. Можете ли вы обновить свой ответ в вопросе. Спасибо. – Jeff

Смежные вопросы