我有一个org.w3c.dom.Document,必须对其进行zip和base64编码,以便通过HTTP/HTTPS使用EBICS协议发送它我试过了
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(doc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget);
InputStream inflated_stream = new InflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));
final byte[] bytes64bytes = Base64.encodeBase64(IOUtils.toByteArray(inflated_stream));
OrderData = new String(bytes64bytes);
但得到一个例外
java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:218)
我没有尝试过这个,但以下内容不会满足您的需求吗?
OutputStream outputStream = new ZipOutputStream(new ByteArrayOutputStream());
我认为您的问题可能归结为使用InflaterInputStream
- 您不是想放气吗?如果您只是将InflaterInputStream
更改为DeflaterInputStream
,您的代码可能会起作用
更改
InputStream inflated_stream = new InflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));
自
InputStream inflated_stream = new DeflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));
解决了问题谢谢