通过HttpUrlConnection流式传输多个文件

时间:2015-04-26 05:23:05

标签: java httpurlconnection

我的应用程序需要将多个文件传输到http服务器(通过从HttpUrlConnection打开OutputStream)但是为了避免连接建立的开销,我们只想使用一个连接。这可行吗?

注意:数据是实时创建的,因此我们无法将它们添加到一个存档文件中并一次性传输。

感谢您的建议!

3 个答案:

答案 0 :(得分:3)

您过度优化。 HttpURLConnection已在后台进行TCP连接池。只需为每个文件使用新的URL, HttpURLConnectionOutputStream等。

答案 1 :(得分:0)

您必须输出多个文件这一事实并不能阻止您仍然可以使用可以使用OutputStream实时创建的存档格式;和zip是这样的格式。

JDK有ZipOutputStream可以帮助你;基本上你可以这样使用它(用于设置未显示的HTTP头的代码):

// out is your HttpUrlConnection's OutputStream

try (
    final ZipOutputStream zout = new ZipOutputStream(out);
) {
    addEntries(zout);
}

addEntries()方法将创建ZipEntry个实例,每个文件一个,并写入内容。

答案 2 :(得分:-2)

尝试使用Apache HttpClient。它支持HTTP 1.1 keep-alive功能。

参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html

快速阅读:http://en.wikipedia.org/wiki/HTTP_persistent_connection