MTOMを使用してWebサービスからファイルをダウンロードする必要があります。以下の実装の詳細は私にはわかりません。私はこのように機能します(応答はWebサービスから返されるオブジェクトであり、データはjavax.activation.DataHandler
タイプでfilePath
あり、ダウンロードしたコンテンツを保存するファイルです):
DataHandler dataHandler = response.getData();
File file = new File(filePath);
FileOutputStream fileOutputStream = new FileOutputStream(file);
dataHandler.writeTo(fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
しかし、私が必要としているのは、ダウンロード中に書き込まれたバイト数を把握することです。長い時間がかかる場合があります。この方法では、ダウンロードが完了するのを待ってから、出力ストリームを閉じて続行します。
書き込まれたバイト数を読み取り、それを使って何かを行うために、おそらく別のスレッドが必要になるでしょう(SWTアプリケーションでprogressBarを更新するために必要です)。
私のアイデアは、DataHandlerを何らかの方法で拡張し、定期的に何バイトが書き込まれるかを尋ねることでした。しかし、私はjava noobであり、それを実現する方法がわかりません。