メッセージ ハブからファイルをフェッチするのに役立つ Web サービスを使用しています。ファイルの種類は、XML または ZIP のいずれかです。
ZIP ファイルの場合、コンテンツ タイプはバイナリです。
私はこのコードを持っています:
private String extractPayload(String filePath, AttachmentPart attach){
FileOutputStream fileStream = null;
try {
DataHandler handler;
handler = attach.getDataHandler();
File f = new File(filePath);
fileStream = new FileOutputStream(filePath);
handler.writeTo(fileStream);
fileStream.flush();
} catch (Exception ex) {
logger.info("####Exception:" + ex.getMessage());
} finally {
if (fileStream != null)
fileStream.close();
}
return filePath;
}
現在、コードは XML ファイルを取得するために正常に動作しますが、ZIP ファイルの場合、ファイルが破損していることが判明しました。Messaging Hub からファイル ユーティリティを使用して同じファイルをダウンロードしたところ、SOAP 添付ファイルを介して取得したファイルのサイズが実際のサイズより約 4 バイト大きいことがわかりました。
更新 :添付ファイルのエンコーディングは 7 ビット (邪魔になる場合) ですが、別の zip を含む別の添付ファイルは Quote-printable にエンコードされています。両方の zip が同じ Web サービスからフェッチされており (ただし、エンコーディングは異なります)、どちらも破損しています。
編集:ファイルを受信しているエンコーディングに問題があると強く感じています。実際のファイルと受信した添付ファイルの比較を次に示します。
実際のファイル サイズ : 9031 バイト 受信した添付ファイル サイズ : 9066 バイト
ドキュメント エディターで両方のファイルを比較して、両方の違いを見つけようとしました。元のファイルと取得した添付ファイルの違い (バイナリ エディタ):
ed を 3f に変更、db を 3f に変更、d6 を 3f に変更、85 を 3f に変更、d0 を 3f に変更、
等々。
zip ファイルには、PDF ファイルと XML ファイルが含まれています。
両方のファイルの開始行は類似しており、PK で始まります