我的應用程序需要將多個文件傳輸到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