2008-10-27 12 views
6

¿Cómo llamo a una url para procesar los resultados?Obteniendo un archivo de una solicitud HTTP en java

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

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

ACTUALIZACIÓN: Esto se ejecutará exclusivamente en el servidor; no hay una solicitud que active el envío de correos electrónicos, sino que es un correo electrónico programado.

Respuesta

7
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: Se borró el código.

+0

Hola Albert, gracias por eso, lo intentaré ahora. – RodeoClown

1

Si la intención es ejecutar otro recurso mientras su servlet se está ejecutando sin transferir el control al otro recurso, puede intentar usar include (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 está incluido en su servlet.

EDITAR: Como busca recuperar un archivo, esta solución también funciona.

+0

Gracias Vincent. Parece que no cumplirá con lo que estoy buscando, no estoy buscando incluir nada en la respuesta. No hay respuesta en esta instancia (es una tarea programada que se ejecuta puramente en el lado del servidor). – RodeoClown

Cuestiones relacionadas