Domanda

Come posso chiamare un URL per elaborare i risultati?

Ho un servlet di report autonomo al quale mi collego per i report. Voglio inviare questi rapporti via e-mail ora, se lo facessi nel browser, potrei semplicemente usare una richiesta xhttp ed elaborare i risultati - Fondamentalmente voglio fare la stessa cosa in Java, ma non sono sicuro di come procedere esso.

AGGIORNAMENTO : sto cercando di recuperare un file dall'URL (che sia un pdf, un html ecc.).

AGGIORNAMENTO : verrà eseguito esclusivamente sul server - non vi è alcuna richiesta che attiva l'invio di e-mail, piuttosto è un'e-mail pianificata.

È stato utile?

Soluzione

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

Modifica: ripulito il codice.

Altri suggerimenti

Controlla le classi URL e URLConnection. Ecco un po 'di documentazione: http://www.exampledepot.com/egs/java. net / Post.html

Se l'intenzione è di eseguire un'altra risorsa mentre il servlet sta eseguendo senza trasferire il controllo sull'altra risorsa, puoi provare a usare include (richiesta, risposta).

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

Puoi metterlo su un servlet e il risultato dell'altra risorsa è incluso nel servlet.

EDIT: Dal momento che stai cercando di recuperare un file, questa soluzione funziona anche per quello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top