【发布时间】:2015-11-22 14:45:51
【问题描述】:
我正在自定义处理程序中进行一些验证,以防出错从自定义处理程序向客户端发送响应。但是,客户端请求的原始有效负载也会发送回客户端。如何从响应消息中清空正文?如果我调试 SoapBody,它似乎是空的,但仍然以某种方式将原始有效负载发送回客户端。
这是我将消息发送回用户的函数。
private void myAuthErrorHandler(MessageContext msgCtx)
{
Axis2MessageContext axis2smc = (Axis2MessageContext) msgCtx;
org.apache.axis2.context.MessageContext axis2MessageCtx = axis2smc.getAxis2MessageContext();
SOAPBody body = msgCtx.getEnvelope().getBody();
// remove the existing payload
for (Iterator itr = body.getChildElements(); itr.hasNext();) {
OMElement child = (OMElement) itr.next();
child.detach();
}
log.error(""+msgCtx.getEnvelope());
axis2MessageCtx.setProperty("HTTP_SC", "403");
axis2MessageCtx.setProperty("NO_ENTITY_BODY", new Boolean("true"));
axis2MessageCtx.setProperty("RESPONSE", "true");
axis2MessageCtx.setTo(null);
Axis2Sender.sendBack(msgCtx);
}
log.error(""+msgCtx.getEnvelope());看起来是空的,但仍将原始正文(有效负载)发送回客户端。
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body></soapenv:Body></soapenv:Envelope>
这可能是一个错误还是为什么将原始正文发送回客户端?还有其他方法可以清除响应体吗?
感谢您的帮助。
【问题讨论】: