如何调用url以处理结果?从java中的http请求获取文件
我有一个独立的报告servlet,我链接到报告。我现在想给这些报告发电子邮件,如果我在浏览器中这样做,我可以使用xhttprequest并处理结果 - 我基本上想在Java中做同样的事情,但我不知道如何去做它。
UPDATE:我正在寻找从URL(无论是PDF或HTML等)的文件。
UPDATE:这将纯粹在服务器上运行 - 没有触发电子邮件的请求,而是一个计划的电子邮件。
如何调用url以处理结果?从java中的http请求获取文件
我有一个独立的报告servlet,我链接到报告。我现在想给这些报告发电子邮件,如果我在浏览器中这样做,我可以使用xhttprequest并处理结果 - 我基本上想在Java中做同样的事情,但我不知道如何去做它。
UPDATE:我正在寻找从URL(无论是PDF或HTML等)的文件。
UPDATE:这将纯粹在服务器上运行 - 没有触发电子邮件的请求,而是一个计划的电子邮件。
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();
}
}
编辑:清理了代码。
查看URL和URLConnection类。这里有一些文档:http://www.exampledepot.com/egs/java.net/Post.html
谢谢你,现在结账。 – RodeoClown 2008-10-27 00:06:58
如果您的意图是运行另一个资源,而您的servlet正在执行,而无需将控制权转移给其他资源,则可尝试使用include(请求,响应)。
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/url of other resource");
if (dispatcher != null)
dispatcher.include(request, response);
}
你可以把它放在一个servlet上,其他资源的结果包含在你的servlet中。
编辑:既然你正在寻找一个文件,那么这个解决方案也适用于此。
谢谢文森特。 它看起来并不像我所期望的那样 - 我不想在响应中包含任何内容。在这种情况下没有响应(这是一个纯粹运行在服务器端的计划任务)。 – RodeoClown 2008-10-27 00:31:33
嗨艾伯特,谢谢你 - 我会试试看。 – RodeoClown 2008-10-27 00:35:28