Как мне вызвать URL-адрес, чтобы обработать результаты?
У меня есть автономный сервлет отчетов, на который я ссылаюсь для отчетов. Я хочу отправить эти отчеты по электронной почте сейчас, если бы я делал это в браузере, я мог бы просто использовать xhttprequest и обрабатывать результаты - я в основном хочу сделать то же самое на Java, но я не уверен, как это сделать Это.
ОБНОВИТЬ: Я ищу, чтобы вернуть файл по URL-адресу (будь то pdf или html и т. д.).
ОБНОВИТЬ: это будет выполняться исключительно на сервере - нет запроса, запускающего отправку электронной почты, скорее это запланированное электронное письмо.




Ознакомьтесь с классами URL и URLConnection. Вот некоторая документация: http://www.exampledepot.com/egs/java.net/Post.html
Если намерение состоит в том, чтобы запустить другой ресурс во время выполнения вашего сервлета без передачи управления другому ресурсу, вы можете попробовать использовать include (запрос, ответ).
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/url of other resource");
if (dispatcher != null)
dispatcher.include(request, response);
}
Вы можете поместить это в сервлет, и результат другого ресурса будет включен в ваш сервлет.
Обновлено: Поскольку вы хотите получить файл, это решение работает и для этого.
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();
}
}
Обновлено: очищен код.
Спасибо, Винсент. Не похоже, что это полностью соответствует тому, что я ищу - я не собираюсь включать что-либо в ответ. В этом случае нет ответа (это запланированная задача, которая выполняется исключительно на стороне сервера).