Question

J'utilise un NSMutableURLRequest pour se connecter à un site Web pour obtenir une réponse JSON. Je le fais en générant la demande, puis en utilisant NSURLConnection avec un délégué de soi pour gérer la connexion asynchrone. Je l'ai mis en œuvre toutes les méthodes de délégué normales:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

Tout fonctionne parfaitement avec l'obtention de données en arrière, traiter toutes les erreurs qui se produisent, etc. Cependant, avec le délai d'attente sur le NSURLRequest à 10 secondes, je ne semble pas obtenir appelé dans ces méthodes (je m'y attendais le didFailWithError pour obtenir appelé ). Il se trouve juste là pour toujours et je ne notification qu'il a expiré.

Lecture de l'API iPhone docs, je ne vois aucune mention de ce que devrait se produire lorsque le délai d'attente se produit, juste que vous pouvez définir la valeur de délai d'attente. Que faut-il? Je ne vois pas d'autres méthodes de délégué de l'API qui aiderait. Je n'ai pas de vérifier manuellement les délais d'attente, dois-je? Sont les délais d'attente uniquement pour les requêtes synchrones?

Était-ce utile?

La solution

Votre délai d'attente est reçu dans cette méthode:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

Autres conseils

u br recevant ce type de iofo:

n'échouer avec

  

Erreur: erreur Domaine = NSURLErrorDomain Code = -1001 UserInfo = 0xed4870   "Mise en attente"

Le comportement de délai d'attente est un peu bizarre, voir ce fil sur les forums de développeurs d'Apple.

Ce que je l'ai fait était ceci:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    if (error.code == -1001){
        [self showTimeoutAlert];//My method to show dialog with timeout message.
    } else {
        [self showInvalidURLAlert];//My method to show dialog with bad URL message.
    }
}

Comme dit précédemment -1001 est pour le délai, dans d'autres tests que je suis -1003 (pour mauvaise URL ou non avaliable de connexion).

Je visais pour traiter délai si tout ce que je traité comme une mauvaise URL.

Mettez quelques déclarations de journaux dans chaque méthode et vérifier ce qu'ils donnent. Chaque fois qu'il fois, vous obtenez certainement une notification sur la console sur le délai d'attente. Je reçois cette notification. Vérifiez votre code et si vous avez encore des problèmes, contactez-nous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top