首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于Java的异步HTTP客户端

用于Java的异步HTTP客户端
EN

Stack Overflow用户
提问于 2009-06-19 02:53:43
回答 12查看 28.7K关注 0票数 19

作为Java世界中的一个相对新手,我发现许多在许多其他框架中相对微不足道的事情很难完成。主要的例子是异步http请求的简单解决方案。既然一个似乎还不存在,那么最好的方法是什么?使用阻塞类型库创建我自己的线程,比如httpclient或者内置的java http东西,或者我应该使用更新的非阻塞io java东西对于一些本应该很简单的东西来说,这似乎特别复杂。

我正在寻找的是从开发人员的角度来看易于使用的东西-类似于AS3中的URLLoader -您只需创建一个URLRequest -附加一组事件处理程序来处理完成、错误、进度等,并调用一个方法来触发它。

如果你不熟悉AS3中的URLLoader,它非常简单,看起来像这样:

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
}
EN

回答 12

Stack Overflow用户

发布于 2010-04-16 15:38:33

使用以前称为ning客户端库的"Async Http Client“。请参阅http://code.ning.com/2010/03/introducing-nings-asynchronous-http-client-library/

现已在GitHub https://github.com/ning/async-http-client上提供

票数 15
EN

Stack Overflow用户

发布于 2009-11-15 07:04:17

Apache Commons版本4.0 (现在在HttpComponents/HttpCore中)也支持HttpClient的NIO (非阻塞IO)。我想这是你最好的选择。

票数 8
EN

Stack Overflow用户

发布于 2009-11-15 07:01:32

Jetty HTTP client是异步的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1014528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档