簡體   English   中英

如何從Spring Web Service刪除Soap消息中的body元素

[英]How to remove body element in Soap message from Spring web service

我有以下攔截器,用於修改soap響應的標頭。 我也想清除肥皂反應的內容,但是我找不到有關此操作或解決方法的任何文獻資料。 有什么建議嗎?

  public class LisResponseInterceptor extends EndpointInterceptorAdapter {

        @Override
        public boolean handleResponse(MessageContext messageContext, Object endpoint) {
            return true;
        }

        @Override
        public boolean handleRequest(MessageContext messageContext, Object endpoint) {
            return true;
        }

        @Override
        public boolean handleFault(MessageContext messageContext, Object endpoint) {

            SoapMessage response = (SoapMessage) messageContext.getResponse();
            SoapHeader header = response.getSoapHeader();
            header.addHeaderElement(new QName("ims","imsx_syncRequestHeaderInfo"));

            SoapBody body = response.getSoapBody();

                    // clear body

            return true;
        }
    }

修復

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header>
      <imsx_syncRequestHeaderInfo xmlns="ims"/>
   </SOAP-ENV:Header>
   <SOAP-ENV:Body/>
</SOAP-ENV:Envelope>


public class LisResponseInterceptor extends EndpointInterceptorAdapter {

    @Override
    public boolean handleResponse(MessageContext messageContext, Object endpoint) {
        return true;
    }

    @Override
    public boolean handleRequest(MessageContext messageContext, Object endpoint) {
        return true;
    }

    @Override
    public boolean handleFault(MessageContext messageContext, Object endpoint) {

        SoapMessage response = (SoapMessage) messageContext.getResponse();
        SoapHeader header = response.getSoapHeader();
        header.addHeaderElement(new QName("ims","imsx_syncRequestHeaderInfo"));

        SoapBody body = response.getSoapBody();

        Transformer identityTransform = null;

    try {
        identityTransform = TransformerFactory.newInstance().newTransformer();
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    } catch (TransformerFactoryConfigurationError e) {
        e.printStackTrace();
    }

    try {
        identityTransform.transform(new DOMSource(null), body.getPayloadResult());
    } catch (TransformerException e) {
        e.printStackTrace();
    }

        return true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM