如何使用拦截器添加 Mule header?

How to add Mule header using Interceptor?

嗨,我有肥皂请求

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <ns2:TrackRequest xmlns:ns4="namespace4" xmlns:ns3="namespace3" xmlns:ns2="namespace2" xmlns="namespace1">
        <Request>
            <RequestOption>BB</RequestOption>
        </Request>
        <ns2:InquiryNumber>AA</ns2:InquiryNumber>
    </ns2:TrackRequest>
</soap:Body>

我要这样

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
    <ns3:MYSecurity xmlns:ns3="namespace3">
        <ns3:UsernameToken>
            <ns3:Username>5</ns3:Username>
            <ns3:Password>N</ns3:Password>
        </ns3:UsernameToken>
        <ns3:ServiceAccessToken>
            <ns3:AccessLicenseNumber>AC</ns3:AccessLicenseNumber>
        </ns3:ServiceAccessToken>
    </ns3:MYSecurity>
</soap:Header>
<soap:Body>
    <soap:Body>
    <ns2:TrackRequest xmlns:ns4="namespac4" xmlns:ns3="namespace3" xmlns:ns2="namespace2" xmlns="namespace1">
        <Request>
            <RequestOption>BB</RequestOption>
        </Request>
        <ns2:InquiryNumber>AA</ns2:InquiryNumber>
    </ns2:TrackRequest>
</soap:Body>

如何使用 mule SOAP CXF 组件来实现?我们可以使用

public class SecurityHeaderInterceptor extends AbstractSoapInterceptor {

//java代码 }

class 文件使用 Java 来完成这个任务?如果可以那是怎么回事?它需要在添加 header.

后输入

您可以扩展 org.apache.cxf.phase.AbstractPhaseInterceptor 然后修改 SOAPMessage header。

检查此 link 以获取写入 SOAPMessage header 的示例实现:https://www.classle.net/#!/classle/content-page/intercepting-soap-message/

我们可以使用 org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor 并覆盖 handleMessage(SoapMessage message)