2008-10-27 60 views
6

如何調用url以處理結果?從java中的http請求獲取文件

我有一個獨立的報告servlet,我鏈接到報告。我現在想給這些報告發電子郵件,如果我在瀏覽器中這樣做,我可以使用xhttprequest並處理結果 - 我基本上想在Java中做同樣的事情,但我不知道如何去做它。

UPDATE:我正在尋找從URL(無論是PDF或HTML等)的文件。

UPDATE:這將純粹在服務器上運行 - 沒有觸發電子郵件的請求,而是一個計劃的電子郵件。

回答

7
public byte[] download(URL url) throws IOException { 
    URLConnection uc = url.openConnection(); 
    int len = uc.getContentLength(); 
    InputStream is = new BufferedInputStream(uc.getInputStream()); 
    try { 
     byte[] data = new byte[len]; 
     int offset = 0; 
     while (offset < len) { 
      int read = is.read(data, offset, data.length - offset); 
      if (read < 0) { 
       break; 
      } 
      offset += read; 
     } 
     if (offset < len) { 
      throw new IOException(
       String.format("Read %d bytes; expected %d", offset, len)); 
     } 
     return data; 
    } finally { 
     is.close(); 
    } 
} 

編輯:清理了代碼。

+0

嗨艾伯特,謝謝你 - 我會試試看。 – RodeoClown 2008-10-27 00:35:28

1

如果您的意圖是運行另一個資源,而您的servlet正在執行,而無需將控制權轉移給其他資源,則可嘗試使用include(請求,響應)。

RequestDispatcher dispatcher = 
    getServletContext().getRequestDispatcher("/url of other resource"); 
if (dispatcher != null) 
    dispatcher.include(request, response); 
} 

你可以把它放在一個servlet上,其他資源的結果包含在你的servlet中。

編輯:既然你正在尋找一個文件,那麼這個解決方案也適用於此。

+0

謝謝文森特。 它看起來並不像我所期望的那樣 - 我不想在響應中包含任何內容。在這種情況下沒有響應(這是一個純粹運行在服務器端的計劃任務)。 – RodeoClown 2008-10-27 00:31:33