Conseguir um arquivo a partir de uma solicitação HTTP em java
Pergunta
Como posso chamar um url para processar os resultados?
Eu tenho um servlet relatórios stand-alone que eu conectar-se a para relatórios. Eu quero enviar esses relatórios agora, se eu fosse fazer isso no navegador, eu poderia usar apenas um xhttprequest e processar os resultados - Basicamente, eu quero fazer a mesma coisa em Java, mas eu não tenho certeza de como ir sobre -lo.
Atualizar :. Eu estou olhando para obter uma volta arquivo da URL (mesmo que seja um pdf ou html etc)
Atualizar :. Este será executado puramente no servidor - não há nenhum pedido que desencadeia a e-mail, mas sim um e-mail agendada
Solução
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();
}
}
Edit:. Limparam o código
Outras dicas
Confira as classes URL e URLConnection. Aqui está alguma documentação: http://www.exampledepot.com/egs/java. net / Post.html
Se a intenção é executar outro recurso, enquanto o seu servlet está executando com a transferência do controle para o outro recurso que você pode tentar usar include (request, response).
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/url of other resource");
if (dispatcher != null)
dispatcher.include(request, response);
}
Você pode colocar isso em um servlet e o resultado do outro recurso está incluído em seu servlet.
EDIT: Desde que você está olhando para obter um arquivo de volta, em seguida, esta solução funciona para isso também
.