我们正在尝试将SoapMessage转换为String值。在我们的代码中,我们将SoapMessage编写为ByteArrayOutputStream。但是使用ByteArrayOutputStream,存在许多问题,如内存泄漏问题和性能问题
请在下面找到我们的代码:
MessageContext messageContext;
SoapMessage requestSoapMessage = (SoapMessage)messageContext.getRequest();
SoapMessage responseSoapMessage = (SoapMessage)messageContext.getResponse();
//Getting request
ByteArrayOutputStream baos_req = new ByteArrayOutputStream();
requestSoapMessage.WriteTo(baos_req);
String soapReqMsg = baos_req.toString();
//Getting response
ByteArrayOutputStream baos_resp = new ByteArrayOutputStream();
responseSoapMessage.WriteTo(baos_resp);
String soapRespMsg = baos_resp.toString();
请任何人指导我, 有没有办法在不使用OutputStream的情况下在String中获取Soap请求和响应。
提前致谢!!!!
答案 0 :(得分:3)
除了使用ByteArrayOutputStream之外别无他法。实际上,这与我自己在Spring-WS中使用的技术相同。虽然我建议使用UTF-8字符编码:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
message.writeTo(bos);
return bos.toString("UTF-8");
我不确定你的意思是什么"内存泄漏和性能问题",我不知道BAOS有任何问题。