Web services 名称空间分组在信封标记处的CXF soap标头

Web services 名称空间分组在信封标记处的CXF soap标头,web-services,cxf,xml-namespaces,soapheader,Web Services,Cxf,Xml Namespaces,Soapheader,我已经使用CXF运行时使用此代码归档了一个SOAP头 //Create The Service URL wsdlURL = RentaCarService.WSDL_LOCATION; RentaCarService ss = new RentaCarService(wsdlURL, new QName("http://karve.com/", "RentaCarService")); RentaCar port = ss.getRentaCarPort();

我已经使用CXF运行时使用此代码归档了一个SOAP头

    //Create The Service
    URL wsdlURL = RentaCarService.WSDL_LOCATION;
    RentaCarService ss = new RentaCarService(wsdlURL, new QName("http://karve.com/", "RentaCarService"));
    RentaCar port = ss.getRentaCarPort();  

    //Create the header XML element
    List<Header> headers = new ArrayList<Header>();

    SOAPFactory sf = SOAPFactory.newInstance();
    SOAPElement seqElement = sf.createElement(new QName("http://karve.com/", "authentication"));
    seqElement.setPrefix("ns2");

    SOAPElement textElement = sf.createElement(new QName("", "companyNo"));
    textElement.addTextNode("00");
    seqElement.addChildElement(textElement);
    seqElement.setPrefix("ns2");

    SOAPElement textElement2 = sf.createElement(new QName("", "password"));
    textElement2.addTextNode("1234");
    seqElement.addChildElement(textElement2);
    seqElement.setPrefix("ns2");

    SoapHeader dummyHeader = new SoapHeader(new QName("", "any"), seqElement);        
    headers.add(dummyHeader);

    //Binding headers
    ((BindingProvider)port).getRequestContext().put(Header.HEADER_LIST, headers);
//创建服务
URL wsdlURL=RentaCarService.WSDL_位置;
RentaCarService ss=新的RentaCarService(wsdlURL,新的QName(“http://karve.com/“,“RentaCarService”);
RentaCar端口=ss.getRentaCarPort();
//创建头XML元素
列表标题=新建ArrayList();
SOAPFactory sf=SOAPFactory.newInstance();
SOAPElement seqElement=sf.createElement(新的QName(“http://karve.com/“,”认证“);
seqElement.setPrefix(“ns2”);
SOAPElement textElement=sf.createElement(新的QName(“,“companyNo”);
textElement.addTextNode(“00”);
seqElement.addChildElement(textElement);
seqElement.setPrefix(“ns2”);
SOAPElement textElement2=sf.createElement(新的QName(“,”密码”);
textElement2.addTextNode(“1234”);
seqElement.addChildElement(textElement2);
seqElement.setPrefix(“ns2”);
SoapHeader dummyHeader=新的SoapHeader(新的QName(“,“任意”),seqElement);
headers.add(dummyHeader);
//绑定头
((BindingProvider)端口).getRequestContext().put(Header.Header_列表,headers);
结果如下所示

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">

        <soap:Header>
            <ns2:authentication xmlns:ns2="http://karve.com/">
                <companyNo>00</companyNo>
                <password>1234</password>
            </ns2:authentication>
        </soap:Header>

        <soap:Body>
            <ns2:testRequest xmlns:ns2="http://karve.com/"/>
        </soap:Body>
    </soap:Envelope>

00
1234
我可以做什么来生成相同的请求,但在信封标记中生成名称空间定义? 我想生成一个请求,如:

    <soap:Envelope 
            xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
            xmlns:ns2="http://karve.com/">

        <soap:Header>
            <ns2:authentication>
                <companyNo>00</companyNo>
                <password>1234</password>
            </ns2:authentication>
        </soap:Header>

        <soap:Body>
            <ns2:testRequest/>
        </soap:Body>
    </soap:Envelope>

00
1234