Question

Comment appeler une URL pour traiter les résultats?

J'ai un servlet de rapport autonome auquel je fais un lien pour les rapports. Je souhaite envoyer ces rapports par e-mail maintenant. Si je le faisais dans le navigateur, je pourrais simplement utiliser un xhttprequest et traiter les résultats - je veux fondamentalement faire la même chose en Java, mais je ne sais pas comment s'y prendre. il.

UPDATE : je souhaite récupérer un fichier à partir de l'URL (qu'il s'agisse d'un fichier PDF ou html, etc.).

MISE À JOUR : le serveur s'exécute uniquement. Aucune demande ne déclenche l'envoi de courriers électroniques. Il s'agit plutôt d'un courrier électronique planifié.

Était-ce utile?

La solution

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

Modifier: nettoyé le code.

Autres conseils

Découvrez les classes URL et URLConnection. Voici de la documentation: http://www.exampledepot.com/egs/java. net / Post.html

Si vous souhaitez exécuter une autre ressource pendant que votre servlet s'exécute sans transférer le contrôle sur cette autre ressource, vous pouvez essayer d'utiliser include (request, response).

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

Vous pouvez placer ceci sur un servlet et le résultat de l'autre ressource est inclus sur votre servlet.

EDIT: Puisque vous souhaitez récupérer un fichier, cette solution fonctionne également pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top