Как сделать веб-запрос в асинхронном режиме - PullRequest
1 голос
/ 04 апреля 2011

Мне нужно сделать веб-запрос к серверу RESTful с Java.Я хотел бы, чтобы мой Java-код обрабатывал ответ асинхронно.Я ищу фреймворк, который обрабатывает потоки и обратные вызовы запроса.

Кстати, я взглянул на FutureTask, и это не то, что мне нужно, потому что он требует от клиента ждатьэто завершить в какой-то момент.Я ищу ответный звонок после завершения.

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Кстати, я взглянул на FutureTask, и он, похоже, не тот, который мне нужен, потому что он требует от клиента ожидания его завершения в какой-то момент.

Вам не нужно вызывать FutureTask.get () из исходного потока, чтобы получить результаты задачи. Вы можете просто передать Callable в FutureTask и обработать его вывод в какой-либо другой компонент. Существуют методы get(), так что вы можете получить результаты асинхронного вычисления, которое может включать ожидание завершения вычисления, если оно еще не выполнено.

Если вы предпочитаете стиль обратного вызова, вы можете просто заставить Callable вызывать обратный вызов вашей собственной конструкции или обрабатывать результат самостоятельно.

1 голос
/ 04 апреля 2011

Это легко решается в Java с помощью шаблона Observer

  • Создать класс, который расширяет Observable и реализует Runnable
  • Создайте экземпляр, передайте ему URL.
  • Основной объект реализует Observer, регистрируется с новым классом в качестве наблюдателя
  • Запустите ваш Runnable, он блокирует HttpUrlConneciton, уведомит наблюдателя о результатах, когда он будет сделан
  • повторите при необходимости.
0 голосов
/ 04 апреля 2011

Ознакомьтесь с проектом асинхронного http-клиента ning на GitHub. Это дает вам возможность использовать Future или определить обратный вызов для завершения запроса:

https://github.com/sonatype/async-http-client

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...