I am using SOAPMessage.writeTo (OutputStream) to log web service messages. The problem is that it also records attachments. This space takes up a lot of space, and binary attachments are not readable. Is there a way to register a message without attachments, for example. shell?
There must be a better solution than this.
ByteArrayOutputStream out = new ByteArrayOutputStream(); message.writeTo(out); StringBuilder builder = new StringBuilder(out.toString()); int indexOfAttachment = builder.indexOf("------="); if (indexOfAttachment != -1) { return builder.substring(0, indexOfAttachment); } return builder.toString();
Message example
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header /> <S:Body> <ns2:wsGetObjectByIDResponse xmlns:ns2="http://xxx.com/" xmlns:ns3="http://yyy.com/"> <return> <serviceResponse status="OK" /> <contentData formatName="jpeg_lres" objectContent="cid: e677f02c-002a-4c2c-8fd9-a3acdba5ad11@example.jaxws.sun.com " objectName="Smlouva1.jpg" /> </return> </ns2:wsGetObjectByIDResponse> </S:Body> </S:Envelope> ------=_Part_9_-806948376.1352979403086 Content-Type: image/jpeg Content-ID: < e677f02c-002a-4c2c-8fd9-a3acdba5ad11@example.jaxws.sun.com > Content-Transfer-Encoding: binary \x00JFIF\x00\x00 \x00 \x00\x00 \x00C\x00
source share