2010-05-15 4 views
0

j'espère obtenir les informations d'en-tête http (taille du fichier) en mode asynchrone.NSNotificationCenter et ASIHTTPRequest

J'initialize que les codes:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processReadResponseHeaders:) name:@"readResponseHeaders" 
              object:nil]; 

mes codes pour lire l'en-tête http

-(void)processReadResponseHeaders: (ASIHTTPRequest *)request ;//(id)sender; 
{ 


    unsigned long long contentLength = [request contentLength]; //error occurs here 

} 

Il doit changer le code source de ASIHTTPRequest.m

J'ai ajouté mon codes à readResponseHeaders de fonction pour notifier l'événement est déclenché)

- (void)readResponseHeaders 
{ 
    //......................... 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"readResponseHeaders" object:self];// 

} 

les rapports du fichier journal:

2010-05-15 13: 47: 38,034 myapp [2187: 6a63] *** - [NSConcreteNotification ContentLength]: sélecteur non reconnu envoyé à l'instance 0x46e5bb0

Bienvenue tout commentaires

Merci InterDev

Répondre

0

sélecteur de observateurs de NSNotificationCenter must ont l'une des signatures:

-(void)observe; 
-(void)observeWithNotification:(NSNotification*)notification; 

Il ne peut pas être un ASIHTTPRequest (même si vous mettez ASIHTTPRequest* dans l'argument, il est encore un NSNotification.)

Il y a 3 propriétés de NSNotification: name, object et userInfo. Vous pouvez obtenir le ASIHTTPRequest avec object, si self est un ASIHTTPRequest lorsque vous postez cette notification:

-(void)processReadResponseHeaders:(NSNotification*)notification { 
    ASIHTTPRequest* request = [notification object]; 
    unsigned long long contentLength = [request contentLength]; 
    ... 
} 
+0

KennyTM Merci beaucoup – arachide