Являясь относительным новичком в мире 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
}