J'ai besoin de faire une requête Web à un serveur RESTful de Java. Je voudrais que mon code Java gère la réponse de manière asynchrone. Je suis à la recherche d'un framework qui gère le threading et les callbacks de la requête. En passant, j'ai regardé FutureTask et ça ne semble pas être ce dont j'ai besoin car cela demande au client d'attendre qu'il se termine à un moment donné. Je suis à la recherche d'un rappel à la fin.Comment faire une demande Web de manière asynchrone
Répondre
D'ailleurs, je pris un coup d'œil à FutureTask et il ne semble pas être ce que je dois, car il exige que le client d'attendre qu'elle se termine à un moment donné.
Vous n'avez pas doivent appel FutureTask.get() du fil initiation afin d'obtenir les résultats de la tâche. Vous pouvez simplement avoir le Callable
passé au FutureTask
également gérer communiquer sa sortie à un autre composant. Les méthodes get()
sont là pour que vous puissiez obtenir les résultats du calcul asynchrone, ce qui peut impliquer d'attendre que le calcul se termine s'il ne l'a pas encore fait.
Si vous préférez le style de rappel, Callable peut simplement appeler un rappel de votre propre construction ou gérer le résultat par vous-même.
Ceci est facilement résolu en java avec le motif d'observateur
- Créer une classe qui étend
Observable
et met en œuvreRunnable
- instancier passer URL à elle.
- objet principal implémente
Observer
, enregistre avec une nouvelle classe en qualité d'observateur - Exécutez votre Runnable, il fait un blocage HttpUrlConneciton, aviserait observateur des résultats lorsque vous avez terminé
- répétition nécessaire.
Découvrez le projet client ning async http sur GitHub. Il vous donne la possibilité d'utiliser un avenir ou de définir un rappel lorsque la demande complète:
- 1. Faire une demande asynchrone avec stact
- 2. comment remplir une liste de manière asynchrone?
- 3. Charger le contenu Web de manière asynchrone
- 4. Comment appeler un service Web RestFul de manière asynchrone?
- 5. Comment faire une gestion asynchrone/indépendante de la demande de page Web?
- 6. Demande web asynchrone dans asp.net httphandler
- 7. Comment envoyer une demande d'URL asynchrone?
- 8. Comment charger les contrôles utilisateur Web de manière asynchrone
- 9. Comment appeler ce service Web de manière asynchrone?
- 10. Comment faire une demande Web attendre un intervalle particulier?
- 11. comment exécuter de manière asynchrone
- 12. Comment faire pour Entity Framework s'exécuter de manière asynchrone
- 13. Manière correcte d'utiliser InternetReadFile() de manière asynchrone
- 14. Demande asynchrone
- 15. Chargement du contenu du site Web de manière asynchrone
- 16. Chargement de la page Web de manière asynchrone
- 17. Demande JSON asynchrone
- 18. ASP.Net Web Service: Exécution de code de manière asynchrone
- 19. Faux réseau de manière asynchrone
- 20. Appeler une DLL de manière asynchrone
- 21. Comment faire une demande
- 22. Faire quelque chose toutes les 60 secondes, de manière asynchrone
- 23. Comment faire une boucle asynchrone propre?
- 24. Comment faire pour faire FetchRequest dans le bloc de rappel de manière asynchrone
- 25. Demande POST asynchrone d'un travailleur Web de Firefox
- 26. Comment télécharger des images de manière asynchrone
- 27. Comment ajouter des lignes à une listview de manière asynchrone?
- 28. L'appel du service Web de manière asynchrone bloque toujours l'application
- 29. Comment utiliser HttpWebRequest (.NET) de manière asynchrone?
- 30. Retourne l'image de manière asynchrone
C'est une bonne suggestion et logique. J'ai rencontré la classe ThreadPoolExecutor, qui semble fournir des fonctionnalités similaires. Est-ce que FutureTask a un thread ou utilise un pool de threads? –
FutureTask ne fait que contourner un Callable et est destiné à être utilisé par un ExecutorService (ou un service similaire). –