Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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 SpringWS:添加自定义SOAP头_Java_Soap_Xsd_Spring Ws_Payload - Fatal编程技术网

Java SpringWS:添加自定义SOAP头

Java SpringWS:添加自定义SOAP头,java,soap,xsd,spring-ws,payload,Java,Soap,Xsd,Spring Ws,Payload,我的目标是什么? <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <aud:HeaderInfo xmlns:bd="http://www.myws.com/"> <bd:ID>123</bd:ID> <bd:Type>text</bd:Type>

我的目标是什么?

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<aud:HeaderInfo xmlns:bd="http://www.myws.com/">
     <bd:ID>123</bd:ID>
     <bd:Type>text</bd:Type>
  </aud:HeaderInfo>
   </SOAP-ENV:Header>
  <SOAP-ENV:Body>
  <ne:myWS xmlns:ne="http://www.iways.com/">
     <ne:INFO>
           <ne:NAME>JOHN</ne:NAME>
           <ne:DESIGNATION>ITA</ne:DESIGNATION>
           <ne:MOBILE>9841011113</ne:MOBILE>
     </ne:INFO>
  </ne:myWS>
我是SpringWS的新手,我有一个WSDL(当然还有一些XSD),我想向SOAP响应添加一些自定义头元素。 我一直在网上搜索,尝试了各种代码,但都没有任何运气。。。似乎没有什么能正常工作

有什么问题吗?

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<aud:HeaderInfo xmlns:bd="http://www.myws.com/">
     <bd:ID>123</bd:ID>
     <bd:Type>text</bd:Type>
  </aud:HeaderInfo>
   </SOAP-ENV:Header>
  <SOAP-ENV:Body>
  <ne:myWS xmlns:ne="http://www.iways.com/">
     <ne:INFO>
           <ne:NAME>JOHN</ne:NAME>
           <ne:DESIGNATION>ITA</ne:DESIGNATION>
           <ne:MOBILE>9841011113</ne:MOBILE>
     </ne:INFO>
  </ne:myWS>
响应SOAP消息有一个主体,spring称之为有效负载,我的SOAP客户端(SOAPUI)很好地接收响应。 但问题来了:我应该如何向响应消息添加新的(自定义)SOAP头

需要什么样的xml响应?

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<aud:HeaderInfo xmlns:bd="http://www.myws.com/">
     <bd:ID>123</bd:ID>
     <bd:Type>text</bd:Type>
  </aud:HeaderInfo>
   </SOAP-ENV:Header>
  <SOAP-ENV:Body>
  <ne:myWS xmlns:ne="http://www.iways.com/">
     <ne:INFO>
           <ne:NAME>JOHN</ne:NAME>
           <ne:DESIGNATION>ITA</ne:DESIGNATION>
           <ne:MOBILE>9841011113</ne:MOBILE>
     </ne:INFO>
  </ne:myWS>
任何一方信息?

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<aud:HeaderInfo xmlns:bd="http://www.myws.com/">
     <bd:ID>123</bd:ID>
     <bd:Type>text</bd:Type>
  </aud:HeaderInfo>
   </SOAP-ENV:Header>
  <SOAP-ENV:Body>
  <ne:myWS xmlns:ne="http://www.iways.com/">
     <ne:INFO>
           <ne:NAME>JOHN</ne:NAME>
           <ne:DESIGNATION>ITA</ne:DESIGNATION>
           <ne:MOBILE>9841011113</ne:MOBILE>
     </ne:INFO>
  </ne:myWS>
我使用xsd,它会根据xsd生成一堆类。我不知道如何将这些自定义头添加到响应消息中。

您可以实现一个并执行以下操作:

public final class MyEndpointInterceptorAdapter extends EndpointInterceptorAdapter {

        @Override
        public boolean handleResponse(MessageContext messageContext_, Object endpoint_) 
throws IOException {

            WebServiceMessage _webServiceMessage = messageContext_.getResponse();
            SoapMessage _soapMessage = (SoapMessage) _webServiceMessage;

            if (_soapMessage != null) {
                SoapEnvelope _soapEnvelope = _soapMessage.getEnvelope();

                // create your qname object
                QName _myQName = ....
                // adding your quname to the header
                _soapEnvelope.getHeader().addHeaderElement(myQName );
            }
    }
}
在spring配置文件中,只需添加拦截器:

<sws:interceptors>
    <ref bean="myEndpointInterceptorAdapter"/>
</sws:interceptors>

Hi,您能否帮助MyEndpointInterceptorAdapter使用qname创建以下标题元素?“>123文本