How to change “SOAP-ENV” default prefix of Spring-WS

后端 未结 3 2158
清歌不尽
清歌不尽 2021-02-13 15:29

I\'ve created a web service using Spring-WS. To maintain compatibility with the old system, I need to change namespace prefix from SOAP-ENV to soap.

3条回答
  •  独厮守ぢ
    2021-02-13 15:40

    A better solution

    Use SOAPMessage API instead of DOM.

      private void alterSoapEnvelope(SaajSoapMessage soapResponse) {
        try {
          SOAPMessage soapMessage = soapResponse.getSaajMessage();
          SOAPPart soapPart = soapMessage.getSOAPPart();
          SOAPEnvelope envelope = soapPart.getEnvelope();
          SOAPHeader header = soapMessage.getSOAPHeader();
          SOAPBody body = soapMessage.getSOAPBody();
          SOAPFault fault = body.getFault();
          envelope.removeNamespaceDeclaration(envelope.getPrefix());
          envelope.addNamespaceDeclaration(PREFERRED_PREFIX, SOAP_ENV_NAMESPACE);
          envelope.setPrefix(PREFERRED_PREFIX);
          header.setPrefix(PREFERRED_PREFIX);
          body.setPrefix(PREFERRED_PREFIX);
          if (fault != null) {
            fault.setPrefix(PREFERRED_PREFIX);
          }
        } catch (SOAPException e) {
          e.printStackTrace();
        }
      }
    

    It's much faster now.

提交回复
热议问题