2010-08-11 9 views
0

JeASIHTTP Échec de la demande dans le journal, mais requestFailed pas appelé

-(void)requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 
    NSLog(@"Request Failed Error: %@", error); 
} 

Quand je fais ma demande que je fais

//add data to the array 
    NSString *json = [array JSONRepresentation]; 
[request appendPostData:[json dataUsingEncoding:NSUTF8StringEncoding]]; 

[request startAsynchronous]; 

Je reçois dans mon journal:

0-08-11 16:52:11.652 MyProject[11720:207] Starting asynchronous request <ASIHTTPRequest: 0x5a7df10> 

2010-08-11 16: 52: 11.861 MyProject [11720: 207] Demande de téléchargement terminé des données 2010-08-11 16: 5 2: 11,861 MyProject [11720: 207] Échec de la demande: (gdb)

Mais ma déclaration de journal dans

-(void)requestFailed 

n'est pas appelé. Des idées?

Vive

+0

Testé dans HTTPRequest, ressemble à des données de taille nulle renvoyées par le serveur. Probablement le problème ici, a surpris le requestFailed n'est pas appelé. Je suppose que c'est seulement si le serveur renvoie un message "Je ne peux pas faire cela/votre demande n'a pas fonctionné"? – quantumpotato

Répondre

1

-requestFailed: est renvoyé uniquement lorsqu'une requête ne peut pas être complétée - par ex. l'échec de contacter le serveur, ou le serveur n'était pas conforme au protocole http.

Si la requête peut être complétée, requestFinished sera appelée, et vous pourrez alors vérifier le code d'état http là, ce qui peut indiquer un échec. responseStatusText peut donner plus d'informations sur l'échec.

+0

Merci - j'ai oublié de définir le nom de l'objet que j'envoyais, mais seulement d'envoyer la liste des paramètres pour cet objet. – quantumpotato

1

Avez-vous mis delegate et les propriétés de la demande? Habituellement:

[request setDelegate:self]; 
[request setDidFailSelector:@selector(requestFailed:)]; 

suffit si la méthode -requestFailed: est dans le même fichier de mise en œuvre de la classe.

Définissez également la propriété didFinishSelector pour appeler un sélecteur local lorsque la demande se termine correctement.

+0

-requestFailed: ce sont les sélecteurs d'échec par défaut, il ne devrait donc pas être nécessaire de le définir (bien que cela ne nuise pas non plus). Spot sur avec le setDelegate cependant, semble la cause la plus probable. – JosephH

+0

Merci - J'ai défini ces paramètres, j'ai oublié d'inclure le nom de l'objet lorsque j'ai envoyé le message, au lieu d'envoyer uniquement une liste de dictionnaire. – quantumpotato