通过 HttpUrlConnection 流式传输多个文件
Stream multiple files over HttpUrlConnection
我的应用程序需要将多个文件传输到一个 http 服务器(通过从 HttpUrlConnection 打开 OutputStream),但是为了避免建立连接的开销,我们只想使用一个连接。这可行吗?
注意:数据是实时创建的,我们无法将它们添加到一个存档文件中并一次性传输。
感谢您的指点!
尝试使用 Apache HttpClient。它支持 HTTP 1.1 保活功能。
参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html
快速阅读:http://en.wikipedia.org/wiki/HTTP_persistent_connection
您必须输出多个文件这一事实并不妨碍您仍然可以使用可以使用 OutputStream
实时创建的存档格式;而zip就是这样一种格式。
JDK 有 ZipOutputStream
可以帮助你;基本上你可以这样使用它(设置 HTTP headers 未显示的代码):
// out is your HttpUrlConnection's OutputStream
try (
final ZipOutputStream zout = new ZipOutputStream(out);
) {
addEntries(zout);
}
然后 addEntries()
方法将创建 ZipEntry
个实例,每个文件一个,并写入内容。
您优化过度了。 HttpURLConnection
已经在幕后进行了 TCP 连接池。只需为每个文件使用新的 URL,
HttpURLConnection
、OutputStream
等。
我的应用程序需要将多个文件传输到一个 http 服务器(通过从 HttpUrlConnection 打开 OutputStream),但是为了避免建立连接的开销,我们只想使用一个连接。这可行吗?
注意:数据是实时创建的,我们无法将它们添加到一个存档文件中并一次性传输。
感谢您的指点!
尝试使用 Apache HttpClient。它支持 HTTP 1.1 保活功能。
参考:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html
快速阅读:http://en.wikipedia.org/wiki/HTTP_persistent_connection
您必须输出多个文件这一事实并不妨碍您仍然可以使用可以使用 OutputStream
实时创建的存档格式;而zip就是这样一种格式。
JDK 有 ZipOutputStream
可以帮助你;基本上你可以这样使用它(设置 HTTP headers 未显示的代码):
// out is your HttpUrlConnection's OutputStream
try (
final ZipOutputStream zout = new ZipOutputStream(out);
) {
addEntries(zout);
}
然后 addEntries()
方法将创建 ZipEntry
个实例,每个文件一个,并写入内容。
您优化过度了。 HttpURLConnection
已经在幕后进行了 TCP 连接池。只需为每个文件使用新的 URL,
HttpURLConnection
、OutputStream
等。