Git*_*ron 19 java httpurlconnection persistent
我正在尝试编写一个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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
ycl*_*ian 18
根据此处的文档,HTTP持久性正在Java中透明地处理,尽管它为您提供了通过http.keepAlive和http.maxConnections系统属性来控制它的选项.
然而,
当前实现不会缓冲响应主体.这意味着应用程序必须完成读取响应主体或调用close()以放弃响应主体的其余部分,以便重用该连接.此外,当前实现不会在清理连接时尝试块读取,这意味着如果整个响应主体不可用,则不会重用连接.
看看链接,看看它是否真的对你有帮助.
小智 5
根据这个链接http://docs.oracle.com/javase/6/docs/technotes/guides/net/http-keepalive.html,默认情况下启用 HTTP 连接重用,您可以使用 Wireshark 检查您之间的交互客户端和服务器。第一个请求包含 TCP 和 SSL 握手(如果您的请求是 https),后续请求在保持活动时间内触发,不包含 TCP 和 SSL 握手,仅包含应用程序数据传输。
| 归档时间: |
|
| 查看次数: |
24760 次 |
| 最近记录: |