我正在使用 wsimport 来生成客户端Web服务代码。 (参见下面wsdl代码的一部分)。
完成代码生成后,我得到没有定义方法的空TokenRequest类。 另一方面,TokenResponse类定义了几个方法,几个setter和几个getter。
鉴于下面的WSDL,为什么我的TokenRequest类为空?
我希望它有4个用于ClientKey,Password,UserKey和UserName的setter方法。 现在,我无法设置这些参数并将它们传递给接收此TokenRequest对象的主Login方法。
我尝试在.NET 4.0中创建对此Web服务的引用,一切都运行完美。 TokenRequest类的构造函数接收了我需要的4个参数。
知道出了什么问题吗?明天我会尝试使用Axis2来做这件事......
<?xml version="1.0" encoding="utf-8"?>
...
<wsdl:input name="TokenRequest">
**<soap12:header message="i0:TokenRequest_Headers" part="ClientKey" use="literal"/>
<soap12:header message="i0:TokenRequest_Headers" part="Password" use="literal"/>
<soap12:header message="i0:TokenRequest_Headers" part="UserKey" use="literal"/>
<soap12:header message="i0:TokenRequest_Headers" part="UserName" use="literal"/>
<soap12:body use="literal"/>**
</wsdl:input>
<wsdl:output name="TokenResponse">
<soap12:body use="literal"/>
</wsdl:output>
...
答案 0 :(得分:1)
此章节“4.1.4。将其他WSDL标头映射到link的方法参数”将解释为什么wsimport不会生成您想要的soap标头属性。 4.1.4节中有一条说明“自JAX-WS RI 2.1.3起,wsimport有一个新选项-XadditionalHeaders,此选项会将这些附加标题映射为方法参数。”。因此,您应该查看库(Metro,Axis,CXF,......)的文档,看看它们是否具有此功能。