我正在尝试编写一个Java程序,该程序将自动下载并命名一些我最喜欢的网络漫画。由于我将请求来自同一域的多个对象,因此我希望有一个持久的http连接,在下载所有漫画之前,我可以一直保持打开状态。以下是我正在进行的工作。如何在不打开新的http连接的情况下从相同域但路径不同发出另一个请求?
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class ComicDownloader { public static void main(String[] args) { URL url = null; HttpURLConnection httpc = null; BufferedReader input = null; try { url = new URL("http://www.cad-comic.com/cad/archive/2002"); httpc = (HttpURLConnection) url.openConnection(); input = new BufferedReader(new InputStreamReader(httpc.getInputStream())); String inputLine; while ((inputLine = input.readLine()) != null) { System.out.println(inputLine); } input.close(); httpc.disconnect(); } catch (IOException ex) { System.out.println(ex); } } }
根据此处的文档,HTTP持久性在Java中是透明处理的,尽管它提供了一些选项,也可以通过http.keepAlive和http.maxConnections系统属性对其进行控制。
http.keepAlive
http.maxConnections
然而,
当前实现不缓冲响应主体。这意味着应用程序必须完成读取响应主体或调用close()才能放弃其余的响应主体,以便重新使用该连接。此外,当前的实现在清理连接时不会尝试读取块,这意味着如果整个响应主体不可用,则该连接将不会被重用。
查看链接,看看它是否真的对您有帮助。