我的应用程序需要将多个文件传输到http服务器(通过从HttpUrlConnection打开OutputStream),但为了避免连接建立的开销,我们只想使用一个连接。这是可行的吗?通过HttpUrlConnection传输多个文件
注意:数据是实时创建的,因此我们无法将它们添加到一个存档文件中并一次传输。
感谢您的建议!
我的应用程序需要将多个文件传输到http服务器(通过从HttpUrlConnection打开OutputStream),但为了避免连接建立的开销,我们只想使用一个连接。这是可行的吗?通过HttpUrlConnection传输多个文件
注意:数据是实时创建的,因此我们无法将它们添加到一个存档文件中并一次传输。
感谢您的建议!
你过度优化。 HttpURLConnection
已经在幕后做了TCP连接池。每个文件只需使用新的URL,
HttpURLConnection
,OutputStream
等。
尝试使用Apache HttpClient。它支持HTTP 1.1保持活动功能。
那么'java.net.HttpURLConnection'。没有必要为此离开JDK。 – EJP
的事实,你必须输出多个文件不会阻止的事实,你仍然可以使用,可以使用OutputStream
创建归档格式, 实时;而zip就是这样一种格式。
JDK有ZipOutputStream
它可以帮助你;基本上可以使用它作为此类(代码来设置的HTTP标头未示出):
// out is your HttpUrlConnection's OutputStream
try (
final ZipOutputStream zout = new ZipOutputStream(out);
) {
addEntries(zout);
}
的addEntries()
方法将随后创建ZipEntry
情况下,每个文件包含一个,并写入的内容。
谢谢fge!实际上数据已经直接写入GZIPOutputStream。目的地的结果文件将是
谢谢EJP!您能否介绍一下TCP连接池? (游泳池大小,超时等)。是否有可能控制这个池?如果我们在每次传输后调用UrlConnection.disConnect(),TCP连接是否合并? – opera