2014-04-05 59 views
0

我想从一个最初显示一些html的url下载一个文件,然后在2-3秒后显示一个下载对话框。显然,如果我这样做:Java从url下载带下载对话框的文件

 try { 
      URL url = new URL("http://my.url"); 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

      con.setRequestProperty("Connection", "Keep-Alive"); 
      con.setRequestProperty("Content-Length", 
        Integer.toString(Integer.MAX_VALUE)); 
      con.setReadTimeout(Integer.MAX_VALUE); 
      con.setConnectTimeout(Integer.MAX_VALUE); 
      con.connect(); 

      bis = new BufferedInputStream(con.getInputStream(), 4096); 

      byteArray = IOUtils.toByteArray(bis); 

      FileUtils.writeByteArrayToFile(new File("myFile"), byteArray); 


     } catch (Exception e) { 
     } 

我将保存显示的.html,而不是显示在保存对话框的文件。 我应该如何更改代码才能做到这一点?

回答

1

我猜对话框只是有一些JavaScript等待几秒钟,并要求文件下载嵌入对话框的某处。

如果是这种情况,那么如果找出包含“真实下载”的元素,则可以使用JSoup或任何其他html解析器库来将链接从页面中删除。

如果下载链接是动态生成的,那么显然你只需要这样做。

在做了rossa建议之后,我会建议在对话窗口中设置javascript断点,以确定真正的url是如何得到请求的。

0

您确定url是您要下载的文件的确切位置吗?我的意思是,是否有任何重定向 - 您可以在浏览器中检查并使用HTTP标头扩展名来检查背后的情况。