【发布时间】:2023-03-24 04:13:01
【问题描述】:
我正在尝试获取 SOAPMessage 对象的原始 xml,并且我正在使用 ByteArrayOutputStream 类进行此操作,但是一旦将压缩附件添加到消息对象中,它就会失去可读性。
这是我的代码:
ByteArrayOutputStream out = new ByteArrayOutputStream();
message.writeTo(out);
strMsg = new String(out.toByteArray());
其中 message 是 SOAPMessage 对象。 问题是,当我将它打印到标准输出或日志或其他一些输出时,strMsg 可能很大并且包含压缩附件的字节数据。有没有办法在将消息写入 ByteArrayOutputStream 对象时截断它?我知道,我可以轻松截断 strMsg,但我看不出有什么理由收集 ByteArrayOutputStream 中的所有数据。
【问题讨论】:
-
如果数据被压缩,它不会有任何可读性丢失,并且您没有任何业务试图将其转换为字符串。不清楚你真正要问的是什么。
-
@EJP - 我很清楚。他正在尝试捕获日志中的 SOAP 消息,而不会在有附件时用大量不可读的内容填充日志文件。
-
@StephenC 所以他需要通过
SoapMessageAPI 获取可读的消息片段,并记录这些片段。不要将整个内容转换为ByteArrayOutputStream,然后再转换为String,这并没有开始实现该目标。 -
@EJP .... 所以写一个答案!
标签: java bytearrayoutputstream