java - 发出在 Java 中异步上传文件的 HTTP 请求的最简单方法是什么?

标签 java http file-upload asynchronous

在 .Net 中,如果我想异步上传文件,我只需要调用 System.Net.WebClient 类的 UploadFileAsync() 实例方法,阻塞主线程,直到它从我传递给UploadFileAsync() 方法,然后在文件上传后调用的事件处理程序内部,使用相同的等待句柄向主线程发出信号。以这种方式上传文件的好处是,还可以订阅一个事件处理程序,每次文件上传进度发生变化时都会调用该程序。

在 Java 中,是否有使用 java.net.URLConnection 类(或类似的东西)实现类似功能的直接方法?

最佳答案

是的,使用 ExecutorService并提交Callable对象,然后等到 future.get()返回结果。例如:

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Foo> future = executor.submit(new Callable<Foo>()
{
    @Override
    public Foo call() throws Exception
    {
        // ...

        return someFoo;
    }
});

Foo result = future.get(); // result is the same as someFoo, both should refer to the same object

再次注意,future.get() 会阻塞,直到后台线程完成执行 call()

关于java - 发出在 Java 中异步上传文件的 HTTP 请求的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865841/

相关文章:

java - 如何获取JTextArea中的指定行

java - 从 Batchlet 内部获取 jobId

c# - HTTPWebResponse 不返回任何内容

JQuery Ajax 基本身份验证 header 无法正常工作

c# - 使用 Javascript 从 ASP.NET FileUpload 控件加载图像

java - NoClassDefFoundError 仅适用于 EAR 中的特定类

java - 如何在Linux上使用java读取浏览器证书?通过使用 keyStore.getInstance ("xyz")

java - 将 txt 文件 POST 到远程 HTTP 服务器

php - getRealPath() 返回 false(Laravel 5.2 和图像干预)

mysql - 加载数据 infile 数据库访问权限/特权