一尘不染

Java中的持久HttpURLConnection

java

我正在尝试编写一个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);
        }
    }
}

阅读 226

收藏
2020-09-08

共1个答案

一尘不染

根据此处文档,HTTP持久性在Java中是透明处理的,尽管它提供了一些选项,也可以通过http.keepAlivehttp.maxConnections系统属性对其进行控制。

然而,

当前实现不缓冲响应主体。这意味着应用程序必须完成读取响应主体或调用close()才能放弃其余的响应主体,以便重新使用该连接。此外,当前的实现在清理连接时不会尝试读取块,这意味着如果整个响应主体不可用,则该连接将不会被重用。

查看链接,看看它是否真的对您有帮助。

2020-09-08