2011-11-23 40 views
2

我正在使用jax-ws生成的代码创建客户端。用于指定多个头元件,像这样的WSDL中,所述结合元件内:客户端是否可以通过WSDL生成请求来排除可选的头元素?

<wsdl:operation name="operation"> 
    <wsoap12:operation soapActionRequired="false" style="document"/> 
    <wsdl:input> 
     <wsoap12:header message="tns:InMsg" part="header1" use="literal"/> 
     <wsoap12:header message="tns:InMsg" part="header2" use="literal"/> 
     <wsoap12:header message="tns:InMsg" part="header3" use="literal"/> 
     <wsoap12:header message="tns:InMsg" part="header4" use="literal"/>  
     <wsoap12:header message="tns:InMsg" part="header5" use="literal"/> 
     <wsoap12:body parts="request" use="literal"/> 
    </wsdl:input> 
    <wsdl:output> 
     <wsoap12:header message="tns:OutMsg" part="header1" use="literal"/> 
      <wsoap12:header message="tns:OutMsg" part="header2" use="literal"/> 
      <wsoap12:body parts="response" use="literal"/> 
    </wsdl:output> 
    <wsdl:fault name="standardError"> 
     <wsoap12:fault name="standardError" use="literal"/> 
    </wsdl:fault> 
</wsdl:operation> 

我的问题中心周围,因为参数,header5着想。根据我的工作规范,这是一个可选值。因此,我使用JAX-WS生成客户端,并且必须传递null(模拟未指定的值)或有效标头值作为要添加到请求中的header5值的操作参数。这将随后创建一个没有子元素的<header5>元素。然后我遇到的问题是,消费服务似乎对该头元素进行某种验证,并确定它是畸形的,因为它通常包含几个不同的子元素。

因此,使用JAX-WS,是否有办法通过从SOAP请求中排除标题元素altogther来满足此可选标题要求?似乎我的同事之间有一些争论,这是否会违反WSDL定义的合同并导致服务返回错误。有一种说法是,.Net客户端允许您从请求中排除标题,只需将其指定为空即可。

回答

相关问题