Tôi đang thực hiện một số xác thực trong trình xử lý tùy chỉnh và trong trường hợp lỗi gửi phản hồi về máy khách từ trình xử lý tùy chỉnh. Tuy nhiên, tải trọng ban đầu của yêu cầu của khách hàng cũng được gửi lại cho khách hàng. Làm thế nào cơ thể có thể được làm trống từ thông điệp phản ứng? Nếu tôi gỡ lỗi SoapBody nó có vẻ là trống rỗng nhưng vẫn bằng cách nào đó tải trọng ban đầu được gửi lại cho khách hàng.Cách thay thế nội dung phản hồi trong WSO2 ESB 4.8.1 Trình xử lý tùy chỉnh
Đây là chức năng của tôi để gửi tin nhắn lại cho người dùng.
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()); có vẻ trống nhưng cơ thể vẫn còn nguyên bản (trọng tải) được gửi lại cho khách hàng.
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body></soapenv:Body></soapenv:Envelope>
Đây có thể là lỗi hoặc tại sao cơ thể ban đầu được gửi lại cho khách hàng? Có phương pháp nào khác để xóa cơ thể phản hồi không?
Cảm ơn bạn đã được trợ giúp.
Đối với tôi đã làm việc thay thế hòa giải tập lệnh trong WSO2 ESB 4.8.1. – Chilcano