20

お気に入りの Web コミックを自動的にダウンロードして名前を付ける 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);
        }
    }
}
4

3 に答える 3

20

ドキュメント hereによると、HTTP 永続性は Java で透過的に処理されますがhttp.keepAlivehttp.maxConnectionsシステム プロパティを介してそれを制御するオプションも提供されます。

でも、

現在の実装は、応答本文をバッファリングしません。つまり、アプリケーションは、その接続を再利用するために、応答本文の読み取りを終了するか、close() を呼び出して残りの応答本文を破棄する必要があります。さらに、現在の実装では、接続をクリーンアップするときにブロック読み取りを試行しません。つまり、応答本文全体が利用できない場合、接続は再利用されません。

リンクを見て、本当に役立つかどうかを確認してください。

于 2010-07-21T21:40:27.857 に答える