62 votes

NSURLConnection timeout ?

J'utilise cette NSURLConnection avec des 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, il tourne dans le navigateur avec une page blanche, sans é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 une idée de la façon dont la connexion peut être interrompue ?

130voto

Tyler Points 16516

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

Assurez-vous également que votre NSURLConnection Le délégué de l'utilisateur est défini et répond à la demande de l'utilisateur. connection:didFailWithError: méthode. Une connexion appelle toujours soit cette méthode, soit connectionDidFinishLoading: à la fin de la connexion.

0 votes

Le délégué fonctionne et répond lorsqu'une erreur est envoyée par le serveur web. Dans ce cas, le serveur web n'envoie rien. Il ne fait que tourner. Je configure la méthode de requête pour ajouter le délai d'attente. Merci

0 votes

Si vous voulez essayer une alternative à NSURLStuff, un de mes amis m'a recommandé ASIHTTPRequest (googlez-le) qui est gratuit à utiliser, et semble assez convivial, y compris la fonctionnalité de délai d'attente.

39 votes

Fyi, la valeur par défaut est de 60 secondes.

24voto

ezekielDFM Points 1641

Editar: Cette réponse est maintenant obsolète, mais à la date de la réponse, elle était exacte.

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

NSMutableURLRequest n'obéit pas à mon timeoutInterval

0 votes

Je pense avoir résolu ce problème en ajoutant NSCredentials à mon application. La non-réactivité était due au fait que le serveur demandait une authentification, que je ne fournissais pas.

5 votes

C'est une information erronée ! D'après developer.apple.com/library/mac/#documentation/Cocoa/Reference/ le délai d'attente par défaut est de 60 secondes.

4 votes

@stigi il semble que vous faites référence à du matériel pour Mac OS alors qu'ezekielDFM parle de iOS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X