我有一個unziping xml簽名的問題,它被改變了。解壓XML文本內容損壞
客戶端發送此XML:
<DatoAdicional>
<Codigo>03</Codigo>
<Valor>: REGULARIZACI�N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor>
</DatoAdicional>
但當unziping我們得到(它改變):
<DatoAdicional>
<Codigo>03</Codigo>
<Valor>: REGULARIZACI???N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor>
</DatoAdicional>
的問題是,當它解壓的服務器碼頭內,因爲當拉鍊被解壓的帶一個Java客戶端,它已經成功地取消了。我的代碼java是:
public static List<ZipContent> getXml(DataHandler file) throws IOException {
ZipInputStream zis = null;
List<ZipContent> zipContents = new ArrayList<>();
try {
zis = new ZipInputStream(file.getInputStream());
for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) {
if (!ze.isDirectory()) {
byte[] buffer = new byte[1 << 11];
ByteArrayOutputStream byteArrayOs = new ByteArrayOutputStream();
int len;
while ((len = zis.read(buffer)) > 0) {
byteArrayOs.write(buffer, 0, len);
}
ZipContent zc = new ZipContent();
zc.setFileName(ze.getName());
zc.setXml(new String(byteArrayOs.toByteArray()));
zipContents.add(zc);
}
zis.closeEntry();
}
zis.close();
return zipContents;
} catch (IOException e) {
throw e;
}
}
Hepl me please。
不知道如何/爲什麼碼頭適合這個問題。示例代碼中沒有任何內容使用servlet規範或jetty中的任何內容。 –
因爲這個方法在從另一個客戶端調用時解壓得很好,那麼我認爲這可能是因爲Jetty –