在 java 中,如何查找连接为获取 URL 的所有部分而发出的请求数?

Posted

技术标签:

【中文标题】在 java 中,如何查找连接为获取 URL 的所有部分而发出的请求数?【英文标题】:In java how to find the number of requests a connection makes to get all parts of a URL? 【发布时间】:2016-07-10 02:45:45 【问题描述】:

如果 URL 指向包含图像、htmljavascript、pdf 文件的页面...

如何确定获取所有这些部分的请求数?以及每个部分的大小?

我的代码如下所示:

      try
      
        url=new URL(aUrl);
        connection=(HttpURLConnection)url.openConnection();
        connection.setRequestMethod("HEAD");
//        connection.connect();
        size=connection.getContentLengthLong();
        Out("URL  : "+aUrl);
        if (size<0) Out("Could not determine file size.");
        else Out("Size : " + size+" bytes");
        connection.getInputStream().close();
      
      catch (Exception e)  e.printStackTrace(); 

它只获取 URL 中 HEAD 指定的大小,我猜这是总大小,我怎样才能确定每个部分的大小:html、javascript、图像...?

更重要的是,有多少请求?

【问题讨论】:

你能把内容打印出来吗?我认为这不会返回您请求的特定 url 上的确切文件以外的任何内容。 我不想获取内容,只是下载之前的大小。 我是说我认为该大小仅表示确切 url 处的文件。所以这不是总大小。如果您请求 .html size 是该文件的大小,但它不包括任何 javascript 或图像等。 这段代码只发出一个请求并下载一个资源。不清楚你在问什么。 因此您必须 [1] 发出并计算获取页面所有部分所需的请求数量,然后 [2] 将它们的大小相加。这肯定很明显吗? 【参考方案1】:

除了获取所有信息之外,没有简单的方法可以获取此信息。您在第一个请求中获得的*** HTML 文档包含指向其他文档(图像、样式表、Javascript 等)的链接,而这些文档又可能包含更多链接(例如,从样式表中引用的背景图像)。这些其他资源甚至可能驻留在其他服务器上。

为了让事情变得更复杂,页面中的 Javascript 可能会动态加载更多资源。

【讨论】:

以上是关于在 java 中,如何查找连接为获取 URL 的所有部分而发出的请求数?的主要内容,如果未能解决你的问题,请参考以下文章

Java如何获取URL连接的日期?

请问用java如何获取下载文件的文件名?

Java如何查找系统的代理设置?

Java如何保护http连接查询字符串URL请求传递和获取敏感数据? [复制]

如何在 sitecore 中获取媒体项目详细信息?

java - 如何查找包含特殊字符或空格的url是不是存在于java中