2014-04-05 102 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標頭擴展名來檢查背後的情況。