2010-07-30 3 views
0

je le code suivant:NSURLRequest requestWithURL: ne fonctionne que sur l'appareil après que je l'ai visité une page dans Safari Mobile

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.lenzerheide.com/modules/weather/iphoneweather.php"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval: 10.0f]; 

[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

Lorsque je teste l'application sur un iPhone, sur certains téléphones (probablement ceux qui havre de paix 't visité récemment une page dans le safari mobile) le didFailWithError est appelé avec "la connexion a été terminted", pas une fois, mais toujours. Mais quand je visite un site en safari mobile, ce problème semble disparaître complètement pendant quelques heures. Je peux même supprimer l'application, le réinstaller et le problème est toujours disparu. Cela semble prendre quelques heures avant que ce problème ne se reproduise et que ce soit la même procédure, il ne charge le code XML qu'après avoir visité un site dans un safari mobile en premier. Si je ne fais pas cela, didFailWithError est appelé tout le temps.

Oh et d'ailleurs, la page d'accueil du xml fonctionne toujours. Je peux charger le XML sur mon Mac sans aucun problème ni même de retard. Juste sur les iPhones qui n'ont pas récemment visité une page dans un safari mobile, je vois le problème.

Des idées?

Répondre

0

Je pense que votre timeout est déclenché plus tôt avant l'ouverture de la page, lorsque la première fois que vous essayez de visiter la page, la résolution DNS sur mobile peut prendre un peu plus de temps que prévu. Pour la première fois, cela prendra un peu plus de temps, mais un safari mobile peut avoir un délai d'expiration un peu plus long que le vôtre. Et la prochaine fois que vous visitez la page de votre application, la résolution dns ne prendra pas le temps car il pick-up de cache pour peu délai généralement 2 à 48 heures (en fonction de la valeur du délai d'attente du serveur dns). Donc, après avoir visité la page dans un safari mobile pour la valeur de délai d'attente, votre xml peut charger plus rapidement et dans votre valeur de délai d'attente.

Donc, essayez d'augmenter votre valeur de délai d'attente ou d'ignorer la valeur de délai d'attente tous ensemble et voir.

+0

Thx, donnera un essai. J'ai d'abord utilisé l'appel NSURLRequest requestWithURL sans l'option timeout, mais cela posait le même problème, donc je vais l'essayer maintenant avec un timeout plus important. Espérons que cela fonctionne. – FrediBach

+0

Ok, je l'ai changé à 60 secondes, mais pas de chance, la connexion se termine presque immédiatement, de sorte que le délai d'attente ne marche pas semblent avoir une influence. Et comme avant, la simple visite d'une page dans un safari mobile résout le problème. Bizarre. – FrediBach

+0

Utilisez-vous une connexion synchrone? –

Questions connexes