web-dev-qa-db-fra.com

Délai d'expiration NSURLConnection?

J'utilise ce NSURLConnection avec les délégués.

nsconnection = [[NSURLConnection alloc] initWithRequest:request
    delegate:self startImmediately:YES];

Le problème est que le site Web ne répond pas du tout. Rien, juste tourne dans le navigateur avec une page vierge, pas d'échec. Dans mes délégués, je gère l'échec, mais lorsque le site ne répond pas, les délégués ne sont pas appelés. Avez-vous des idées sur la façon de suspendre la connexion?

62
Jordan

Vous pouvez spécifier un délai d'expiration dans votre objet NSURLRequest. Une façon de le faire est de le construire via le requestWithURL:cachePolicy:timeoutInterval: méthode. (Vous pouvez passer le paramètre NSURLRequestUseProtocolCachePolicy cachePolicy par défaut si vous ne voulez pas vous soucier de cette partie.) Le délai d'expiration est une valeur à virgule flottante en secondes, comme le sont pratiquement tous les intervalles de temps dans le SDK iPhone.

Assurez-vous également que votre délégué NSURLConnection est défini et répond au connection:didFailWithError: méthode. Une connexion appelle toujours cette méthode ou connectionDidFinishLoading: une fois la connexion terminée.

129
Tyler

Edit: Cette réponse est désormais obsolète, mais à la date de réponse était exacte.

Je sais que ce fil est ancien, mais j'ai également rencontré ce problème. Cela s'est produit lors du test de l'application en dehors du réseau interne où les services vivaient. Le service finira par expirer, mais Apple impose une période de 240 secondes (4 minutes) avant l'expiration du délai. Consultez ce fil pour plus d'informations à ce sujet.

NSMutableURLRequest n'obéissant pas à mon timeoutInterval

24
ezekielDFM