7

結果を処理するために URL を呼び出すにはどうすればよいですか?

レポート用にリンクするスタンドアロンのレポート サーブレットがあります。これらのレポートを今すぐメールで送信したいのですが、ブラウザでこれを行っている場合は、xhttprequest を使用して結果を処理できます。基本的に Java でも同じことをしたいのですが、どうすればよいかわかりません。それ。

更新: URL からファイルを取得しようとしています (それが pdf か html かなど)。

更新: これは純粋にサーバー上で実行されます。電子メール送信をトリガーする要求はなく、スケジュールされた電子メールです。

4

3 に答える 3

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

編集:コードをクリーンアップしました。

于 2008-10-27T00:32:33.613 に答える
1

URL および URLConnection クラスを確認してください。ここにいくつかのドキュメントがあります: http://www.exampledepot.com/egs/java.net/Post.html

于 2008-10-27T00:05:49.300 に答える
1

サーブレットの実行中に他のリソースに制御を移さずに別のリソースを実行することが意図されている場合は、include(request, response) を使用してみてください。

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

これをサーブレットに配置すると、他のリソースの結果がサーブレットに含まれます。

編集:ファイルを取得しようとしているので、このソリューションはその場合にも機能します。

于 2008-10-27T00:24:22.100 に答える