java – 没有附件的SOAPMessage writeTo
发布时间:2020-05-24 03:08:04 所属栏目:Java 来源:互联网
导读:我使用 SOAPMessage.writeTo(OutputStream)来记录Web服务消息.问题是它还会写附件.它占用空间,二进制附件不可读.有没有办法如何记录没有附件的邮件,例如包装纸? 必须有比这更好的解决方案. ByteArrayOutputStream out = new ByteArrayOutputStream();message
|
我使用 SOAPMessage.writeTo(OutputStream)来记录Web服务消息.问题是它还会写附件.它占用空间,二进制附件不可读.有没有办法如何记录没有附件的邮件,例如包装纸? 必须有比这更好的解决方案. 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();
示例消息 <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
x00JFIFx00x00x00x00x00x00Cx00
解决方法实际上有一种方法可以做得更干净.这是我的代码: // Get the Envelope Source Source src = message.getSOAPPart().getContent() ; // Transform the Source into a StreamResult to get the XML Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT,"no"); StreamResult result = new StreamResult(new StringWriter()); transformer.transform(src,result); String xmlString = result.getWriter().toString(); 然后您可以记录xmlString,它只对应于Envelope部分. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
