package com.jianshui.api.config; import cn.hutool.core.util.XmlUtil; import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPHandler; import javax.xml.ws.handler.soap.SOAPMessageContext; import java.util.Set; /** * @Description * @Author 巩权林 * @Date 2023/3/10 15:43 **/ public class WebserviceResponseHandler implements SOAPHandler { @Override public Set getHeaders() { return null; } @Override public boolean handleMessage(SOAPMessageContext context) { SOAPMessage message = context.getMessage(); Boolean outbound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (outbound) { // 处理传出的SOAP消息 try { SOAPBody body = message.getSOAPBody(); Node returnNode = body.getFirstChild().getFirstChild(); Node dataNode = returnNode.getFirstChild(); CDATASection cdata = dataNode.getOwnerDocument().createCDATASection(XmlUtil.toStr(dataNode,"GBK",false,false)); returnNode.removeChild(dataNode); returnNode.appendChild(cdata); // body.getFirstChild().removeChild(body.getFirstChild().getFirstChild()); // CDATASection cdata = Data.getOwnerDocument().createCDATASection(XmlUtil.toStr(fp, "GBK", false, true)); // body.setTextContent(XmlUtil.toStr(body.getFirstChild())); message.saveChanges(); } catch (SOAPException e) { throw new RuntimeException(e); } } else { // 处理传入的SOAP消息 } return true; } @Override public boolean handleFault(SOAPMessageContext context) { return false; } @Override public void close(MessageContext context) { } }