我想使用cxf
和spring
soap webservices创建以下xml:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:key="http://schema.to/WebService">
<soapenv:Header>
<key:Signing>asdasdasd</key:Signing>
</soapenv:Header>
如何做到这一点?如何设置命名空间和自定义标头标记元素?
答案 0 :(得分:4)
在maven cxf配置中使用以下内容:
<wsdlOption>
<wsdl>...</wsdl>
<extraargs>
<extraarg>-exsh</extraarg> <!-- this -->
<extraarg>true</extraarg> <!-- this -->
</extraargs>
</wsdlOption>
这会生成方法属性@WebParam(header = true)
,然后可以在Web服务访问时提供。
答案 1 :(得分:0)
使用实现javax.xml.ws.handler.soap.SOAPHandler<SOAPMessageContext>
的CustomHeaderHandler
在public boolean handleMessage(SOAPMessageContext soapMsgCtx)
中使用此代码
if (msg.getSOAPPart().getEnvelope().getHeader() == null) {
msg.getSOAPPart().getEnvelope().addHeader();
}
msg.getSOAPHeader().addChildElement("Signing", "key").addTextNode("asdasdasd");