我想将 RAW 请求响应 XML 打印到控制台。我已经使用 wsdl2java axis2 创建了 stub 。
wsdl2java 已经创建了 2 个 java 文件,一个用于 stub ,一个用于回调处理程序。
我正在尝试使用以下方法,但得到的是空值
operationContext.getMessageContext("Out");
/
operationContext.getMessageContext("In");.
代码
public void SOAPLogHandler(Stub stub){
ServiceContext serviceConxt = stub._getServiceClient().getServiceContext();
//**** Enable the Cache to hold the last operation
OperationContext OperationContext = new OperationContext();
boolean cacheLastOperationContext = true;
OperationContext.setComplete(true); // Enable the Cache value
serviceConxt.setCachingOperationContext(cacheLastOperationContext);
serviceConxt.setLastOperationContext(OperationContext);
OperationContext operationContext = serviceConxt.getLastOperationContext();
if (operationContext != null) {
MessageContext outMessageContext = operationContext.getMessageContext("Out");
operationContext.getMessageContexts();
if (outMessageContext != null) {
System.out.println("OUT SOAP: "+outMessageContext.getEnvelope().toString());
}
MessageContext inMessageContext = operationContext.getMessageContext("In");
if (inMessageContext != null) {
System.out.println("IN SOAP: "+ inMessageContext.getEnvelope().toString());
}
}
你能告诉我有没有其他方法可以获取原始 xml
最佳答案
我设法通过在 stub (您调用以调用 Web 服务的方法)的方法中添加几行来做到这一点。 我确定了这条线,即
_operationClient.execute(true);
有效联系网络服务并紧随其后添加:
_operationClient.getMessageContext("Out").getEnvelope().serialize(System.out);
_operationClient.getMessageContext("In").getEnvelope().serialize(System.out);
关于java - 打印 Axis2 请求响应 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27170555/