Асинхронный HTTP-клиент для Java - PullRequest
18 голосов
/ 18 июня 2009

Как относительный новичок в мире Java, я нахожу множество вещей, которые разочаровывающе глупы для выполнения, которые относительно тривиальны во многих других средах. Основной пример - простое решение для асинхронных HTTP-запросов. Видя, что человек, кажется, уже не существует, каков наилучший подход? Создание собственных потоков с использованием блокирующего типа lib, такого как httpclient или встроенного Java-содержимого http, или использование более нового неблокирующего io-содержимого Java - это кажется особенно сложным для чего-то, что должно быть простым.

То, что я ищу, - это что-то простое в использовании с точки зрения разработчика - что-то похожее на URLLoader в AS3 - где вы просто создаете URLRequest - присоединяете несколько обработчиков событий для обработки завершения, ошибок, прогресса и т. Д. и вызвать метод для его запуска.

Если вы не знакомы с URLLoader в AS3, это так просто и выглядит примерно так:

private void getURL(String url)
{
    URLLoader loader = new URLLoader();
    loader.addEventListener(Event.Complete, completeHandler);
    loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
    loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

    URLRequest request = new URLRequest(url);

    // fire it off - this is asynchronous so we handle
    // completion with event handlers
    loader.load(request);
}

private void completeHandler(Event event)
{
    URLLoader loader = (URLLoader)event.target;
    Object results = loader.data;

    // process results
}

private void httpStatusHandler(Event event)
{
    // check status code
}

private void ioErrorHandler(Event event)
{
    // handle errors
}

Ответы [ 13 ]

0 голосов
/ 29 июля 2010

Asyncweb предоставляет асинхронный http-клиент вместе со своим http-сервером. Доступно для скачивания из следующего местоположения:

https://svn.apache.org/repos/asf/mina/asyncweb/trunk

0 голосов
/ 07 августа 2009

Я только что наткнулся на асинхронный HTTP-клиент, реализованный в Geronimo. Возможно, вы также захотите взглянуть на http://svn.apache.org/viewvc/geronimo/sandbox/AsyncHttpClient/ - Предостережение: последний коммит, кажется, старше года.

Другим проектом, создающим асинхронный HTTP-клиент, является xsocket: xsocket.sourceforge.net

0 голосов
/ 19 июня 2009

Я бы порекомендовал запустить отдельные темы для этого.

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