Pregunta

¿Cómo llamo a una url para procesar los resultados?

Tengo un servlet de informes independiente con el que me vinculo para los informes. Quiero enviar estos informes por correo electrónico ahora, si estuviera haciendo esto en el navegador, podría usar un xhttprequest y procesar los resultados; básicamente quiero hacer lo mismo en Java, pero no estoy seguro de cómo hacerlo. it.

ACTUALIZACIÓN : estoy buscando recuperar un archivo de la url (ya sea un pdf o html, etc.).

ACTUALIZACIÓN : esto se ejecutará únicamente en el servidor; no hay ninguna solicitud que active el envío por correo electrónico, es un correo electrónico programado.

¿Fue útil?

Solución

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

Editar: limpié el código.

Otros consejos

Revisa las clases de URL y URLConnection. Aquí hay algo de documentación: http://www.exampledepot.com/egs/java. net / Post.html

Si la intención es ejecutar otro recurso mientras su servlet se está ejecutando sin transferir el control al otro recurso que puede intentar usar, incluya (solicitud, respuesta).

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

Puede poner esto en un servlet y el resultado del otro recurso se incluye en su servlet.

EDITAR: ya que está buscando recuperar un archivo, esta solución también funciona para eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top