2011-04-14 2 views
0

J'utilise une requête NSURLRequest pour recevoir des données d'une servlet Java. La servlet écrit immédiatement quelque chose dans le flux de sortie.NSURLRequest reçoit des données trop tard

NSURLRequest reçoit immédiatement la réponse connection:didReceiveResponse:, mais la réception des données dure de 15 à 20 secondes. (Donc c'est le temps entre didReceiveResponse et didReceiveData). Il semble que NSURLRequest met en mémoire tampon les données et attend plus de données.

Comment puis-je prévenir le problème?

+0

Voulez-vous dire que le délai entre [didReceiveResponse] et [didReceiveData] prend trop de temps? –

+0

Oui, c'est ce que je veux dire. – flux

+0

est certainement un problème de Java Servlet, quelle est la taille attendue du flux de sortie qui va être écrit sur le flux? –

Répondre

0

NSURLConnection utilise la mise en mémoire tampon de bas niveau pour collecter les octets.

Il existe une différence entre didReceiveResponse et didRecieveData - car il y aurait un certain acheminement par proxy/de données qui pourrait causer le retard. Pour effectuer vos mesures, vous devez enregistrer l'intervalle de temps entre didRecieveData et connectionDidFinishLoading et comparer l'heure à laquelle vous faites la même chose sur votre navigateur Web.

Espérons que cela aide.

+0

Ok, je l'ai testé dans le navigateur Web. Il a également un délai de 10 - 15 secondes. Je pense que le servlet ne ferme pas le flux correctement. J'ai aussi une implémentation Java. Là, je n'ai pas un tel retard. – flux

+0

Bien. Maintenant, vous êtes sûr que le retard n'est pas dû à certaines incohérences dans NSURLConnectionDelegates que vous pouvez répliquer le comportement dans le navigateur. Les servlets fonctionnent différemment, donc je ne voudrais pas entrer dans ça. Essayez de vous concentrer sur l'implémentation du serveur et faites-le trier. Je suis sûr que cela fonctionnera correctement dans le code iOS. À votre santé. –

Questions connexes