Mar*_*ada 7 java soap web-services
我创建了一个拦截SOAP消息交换的请求 - 响应周期的类,我想记录消息的交换.什么是最好的方式,以便我可以在我的日志文件中记录SOAP消息?
我不希望它在我的日志文件中打印得很漂亮,但我只想访问并查看请求和响应SOAP信封.
我试过这段代码:
public class LogHandler{
private static final Logger _LOG;
@Override
protected void handleResponse(SOAPMessage message)
logSOAPMessage(message);
}
@Override
protected void handleRequest(SOAPMessage message)
logSOAPMessage(message);
}
private void logSOAPMessage(SOAPMessage message){
_LOG.info(":: Logging SOAP Message :: " + message.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
但是没有获得所需的信息.
:: Logging SOAP Message :: oracle.j2ee.ws.saaj.soap.soap11.Message11@715346
Run Code Online (Sandbox Code Playgroud)
任何提示?
Cra*_*lus 13
如果message是,SOAPMessage则执行以下操作:
ByteArrayOutputStream bout = new ByteArrayOutputStream();
message.writeTo(bout);
String msg = bout.toString("UTF-8");
Run Code Online (Sandbox Code Playgroud)
现在String msg有soap消息,你可以记录它.
在你的例子中:
private void logSOAPMessage(SOAPMessage message){
ByteArrayOutputStream bout = new ByteArrayOutputStream();
message.writeTo(bout);
String msg = bout.toString("UTF-8");
_LOG.info(":: Logging SOAP Message :: " + msg);
}
Run Code Online (Sandbox Code Playgroud)
您看到的是 SOAPMessage 的 toString。您可能需要查找 javadoc 以查看是否可以从 Oracle 的 SOAPMessage 获取 SOAPEnvelope,并且它应该包含传入/传出 SOAP 消息。
编辑:请检查getSoapHeader () 和 getSoapBody() 以解构肥皂消息。您可能必须为 Oracle 的 SOAPMessage 包装器找出同样的结果。