Java 如何对org.w3c.dom.Document进行压缩和base64

Java 如何对org.w3c.dom.Document进行压缩和base64,java,dom,base64,zip,Java,Dom,Base64,Zip,我有一个org.w3c.dom.Document,必须对它进行zip和base64编码,以便通过HTTP/HTTPS使用EBICS协议发送它 我试过了 但是有一个例外 java.util.zip.ZipException: incorrect header check at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164) at java.io.FilterInputStrea

我有一个org.w3c.dom.Document,必须对它进行zip和base64编码,以便通过HTTP/HTTPS使用EBICS协议发送它 我试过了

但是有一个例外

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
更改为
DeflaterInputStream

,您的代码就可以工作了。我还没有尝试过这一点,但下面的操作是否可以满足您的需要

OutputStream OutputStream=new ZipOutputStream(new ByteArrayOutputStream())

我认为您的问题可能是由于使用了
充气输入流
——您不是在尝试对该流进行放气吗?如果您只是将
充气输入流
更改为
放气输入流

更改,则代码可能会工作

InputStream inflated_stream = new InflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));

解决了这个问题 谢谢你换衣服

InputStream inflated_stream = new InflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));

解决了这个问题
谢谢

我不能使用gzip作为EBICS中请求的压缩方法的标准zip,我不能使用gzip作为EBICS中请求的压缩方法的标准zip
InputStream inflated_stream = new DeflaterInputStream(new ByteArrayInputStream(outputStream.toByteArray()));