2008-10-27 670 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