Web services 名称空间分组在信封标记处的CXF soap标头
我已经使用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();
//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