2014-03-25 22 views
2

我需要自動從頁面下載帶有多個鏈接的文件(可能包含超過100個帶有單獨鏈接的文件)。我知道要登錄的URL,並且我擁有憑據。如何使用java程序自動下載文件

我願意在Java程序中通過自動化來實現這一點。轉到下載位置頁面的唯一方法是通過登錄到該網站。

cURL命令對此有幫助嗎?

請告訴我這麼做。

+0

我認爲我們正在談論HTTP。只需使用標準的HTTP連接邏輯?不確定是什麼問題。我肯定會**不使用cURL,因爲它是系統特定的(我假設你想使用命令行版本) – nablex

+0

@Nablex:我認爲,她需要通過HTTP連接自動下載。 –

+0

好的,但我仍然沒有看到問題...刮鏈接,循環他們,並使用標準的http邏輯一次下載他們一個?問題究竟在哪裏? – nablex

回答

1

您可以使用wget可以下載日誌文件:

wget -r --no-parent --user=user --password=password --no-check-certificate <URL> 
  • 您可以通過在頭--header,例如--header 「曲奇:JSONSESSIONID = 3433434343434」
  • 您可以使用--post數據傳遞後數據的電子郵件= $電子郵件&密碼= $ PASSWRD「

或者您可以使用下面的HttpClient在Java中:

  • 這裏是登錄並通過POST/GET /頁眉信息
  • 首先得到全HTML網頁作爲字符串
  • 要麼解析字符串得到的文件或鏈接單次轉換的HTTPClient例子ERT使用XML一旦你的文件的鏈接使用將文件下載到的物體,像https://github.com/FasterXML/jackson-dataformat-xml
  • 映射器的Java對象的HttpClient
public void saveFile(String url, String FileName) throws ClientProtocolException, IOException{ 
      HttpGet httpget = new HttpGet(url); 
      HttpResponse response = httpClient.execute(httpget); 
      HttpEntity entity = response.getEntity(); 
      if (entity != null) { 
       long len = entity.getContentLength(); 
       InputStream is = entity.getContent(); 
       FileOutputStream fos = new FileOutputStream(new File(filePath))); 
       IOUtils.copy(is, fos); 
      } 
      return; 
     } 
+0

OP在該頁面有多個鏈接可下載 –

+0

@Sn。如果需要更多參數,我可以使用什麼?例如,不僅用戶名和密碼,還需要其他參數調用agentID,但我不知道第三個參數的關鍵是什麼。 –

+0

我更新了帖子的答案。 –

0

如果你的意思是將文件從一個網站複製一個本地文件,那麼你可以使用java.nio.file

Files.copy(new URL("http://host/site/filename").openStream(), Paths.get(localfile) 
+0

OP在該頁面有多個鏈接要下載 –

+0

@Jackcob:我甚至不知道文件名。無論它包含什麼文件,我都需要下載它。還需要進行身份驗證 –