【发布时间】:2016-08-09 11:31:43
【问题描述】:
问题/介绍
由于 REST,我已经很多年没有真正使用过 SOAP。
我在WSDL 文件中有以下定义:
<xs:complexType name="findByIdentifier">
<xs:sequence>
<xs:element name="arg0" type="xs:long"/>
</xs:sequence>
</xs:complexType>
WSDL2Java生成的code方法是
findByIdentifier(
@WebParam(name = "arg0", targetNamespace = "")
long arg0
)
要求指定我应该提交一个长数组。
我还看到 WSDL 中缺少 maxOccurs 和 minOccurs。
问题
我应该如何修改项目中的 WSDL 文件,以便生成一个采用数组的方法?
如果我不应该破解 WSDL,我是否应该通过扩展类或自定义客户端实现来执行其他操作(无法实现生成代码的目的)?
【问题讨论】:
-
您已经看到 wsdl 中缺少
maxOccurs和minOccurs?那么为什么不直接添加它们呢? -
@jmattheis 好吧,项目经理说这会导致与客户的 Web 服务不兼容。我们确实从他们的服务器下载了 WSDL。我已经尝试添加一个
unboundedmax 并且正在尝试。 -
顺便说一句,您应该提交一个长数组的要求是从哪里来的? wsdl 指定只有一个
long参数,所以其余服务器将只接受long而不是一个数组?还是wsdl有问题? -
@ jmattheis 客户在文档/用例中概述的详细信息与其 WSDL 之间似乎存在差异。我破解了 WSDL 并尝试调用看看会发生什么。
-
@jmattheis 我尝试发送一个长数组列表。我只收到了一个元素。我将尝试将响应定义更改为
anytype,以防万一。事实证明,更改类型会导致返回相同的对象。唯一的解决方案是让他们更改他们的 Web 服务实现和 WSDL,或者让我使用 for 循环。