Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向cxf soap请求添加自定义头?_Java_Spring_Web Services_Soap_Cxf - Fatal编程技术网

Java 如何向cxf soap请求添加自定义头?

Java 如何向cxf soap请求添加自定义头?,java,spring,web-services,soap,cxf,Java,Spring,Web Services,Soap,Cxf,我想使用cxf和springsoap-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> <

我想使用
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>

阿斯达斯达斯德

如何做到这一点?如何设置名称空间和自定义标头标记元素?

在maven cxf配置中使用以下内容:

<wsdlOption>
    <wsdl>...</wsdl>
    <extraargs>  
        <extraarg>-exsh</extraarg> <!-- this -->
        <extraarg>true</extraarg> <!-- this -->
    </extraargs>
</wsdlOption>

...
-埃克斯
符合事实的

这将生成方法属性
@webgram(header=true)
,然后可以在webservice access上提供这些属性。

在maven cxf配置中使用以下内容:

<wsdlOption>
    <wsdl>...</wsdl>
    <extraargs>  
        <extraarg>-exsh</extraarg> <!-- this -->
        <extraarg>true</extraarg> <!-- this -->
    </extraargs>
</wsdlOption>

...
-埃克斯
符合事实的

这将生成方法属性
@webgram(header=true)
,然后可以在webservice access上提供这些属性。

使用实现
javax.xml.ws.handler.soap.SOAPHandler的CustomHeaderHandler
公共布尔handleMessage(SOAPMessageContext soapMsgCtx)
中使用如下代码

if (msg.getSOAPPart().getEnvelope().getHeader() == null) {
    msg.getSOAPPart().getEnvelope().addHeader();
}
msg.getSOAPHeader().addChildElement("Signing", "key").addTextNode("asdasdasd");

使用实现
javax.xml.ws.handler.soap.SOAPHandler
公共布尔handleMessage(SOAPMessageContext soapMsgCtx)
中使用如下代码

if (msg.getSOAPPart().getEnvelope().getHeader() == null) {
    msg.getSOAPPart().getEnvelope().addHeader();
}
msg.getSOAPHeader().addChildElement("Signing", "key").addTextNode("asdasdasd");