7

如何调用 url 来处理结果?

我有一个独立的报告 servlet,我链接到该 servlet 以获取报告。我现在想通过电子邮件发送这些报告,如果我在浏览器中执行此操作,我可以使用 xhttprequest 并处理结果 - 我基本上想在 Java 中做同样的事情,但我不知道该怎么做它。

更新:我希望从 url 中取回一个文件(无论是 pdf 还是 html 等)。

更新:这将纯粹在服务器上运行 - 没有触发电子邮件的请求,而是预定的电子邮件。

4

3 回答 3

8
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();
    }
}

编辑:清理代码。

于 2008-10-27T00:32:33.613 回答
1

查看 URL 和 URLConnection 类。这是一些文档:http ://www.exampledepot.com/egs/java.net/Post.html

于 2008-10-27T00:05:49.300 回答
1

如果打算在您的 servlet 执行时运行另一个资源而不将控制权转移到另一个资源,您可以尝试使用 include(request, response)。

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

您可以将它放在一个 servlet 上,而其他资源的结果将包含在您的 servlet 中。

编辑:由于您正在寻找一个文件,那么这个解决方案也适用于此。

于 2008-10-27T00:24:22.100 回答