如何使用Interceptor添加Mule标头?

时间:2016-03-08 13:25:21

标签: header namespaces mule cxf 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代码 }

使用Java执行此任务的类文件?如果可以怎么样?它需要在添加标题后输入。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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