java - 用于 Java 的异步 HTTP 客户端

标签 java actionscript-3 http httpwebrequest

作为 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
}

最佳答案

Java 中的异步 HTTP 客户端有多种选择

  1. Java 8:使用 async-http-client以前称为 ning http 客户端库。
  2. Java 11 及更高版本:JDK 现在带有 java.net.http. HttpClient这是完全异步的。
  3. Square 的 OkHttpClient .支持带回调的同步阻塞和异步调用。在 Android 上很受欢迎。

关于java - 用于 Java 的异步 HTTP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014528/

相关文章:

apache-flex - 如何增加 Virtualized Flex 4 布局中的缓冲区

sqlite - Flex SQLite显示SUM()结果

java - 我无法确定数组的类型

javascript - 如何使用javascript多次访问一个页面?

javascript - 多次发送响应?

java - 用于代理的 jsocks 库

java - 如何加密mysql中的某些表

java - 将对象添加到列表

java - 当尝试在 Selenium 中使用 POM 自动化论坛时,我遇到了 java.lang.NoClassDefFoundError...我该如何解决这个问题?

angular - 不要从 Angular 表单发送值