【问题标题】:SOAP WSDL sequence definition - one argument or many?SOAP WSDL 序列定义——一个参数还是多个参数?
【发布时间】: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 中缺少 maxOccursminOccurs

问题

我应该如何修改项目中的 WSDL 文件,以便生成一个采用数组的方法?

如果我不应该破解 WSDL,我是否应该通过扩展类或自定义客户端实现来执行其他操作(无法实现生成代码的目的)?

【问题讨论】:

  • 您已经看到 wsdl 中缺少 maxOccursminOccurs?那么为什么不直接添加它们呢?
  • @jmattheis 好吧,项目经理说这会导致与客户的 Web 服务不兼容。我们确实从他们的服务器下载了 WSDL。我已经尝试添加一个unbounded max 并且正在尝试。
  • 顺便说一句,您应该提交一个长数组的要求是从哪里来的? wsdl 指定只有一个 long 参数,所以其余服务器将只接受 long 而不是一个数组?还是wsdl有问题?
  • @ jmattheis 客户在文档/用例中概述的详细信息与其 WSDL 之间似乎存在差异。我破解了 WSDL 并尝试调用看看会发生什么。
  • @jmattheis 我尝试发送一个长数组列表。我只收到了一个元素。我将尝试将响应定义更改为anytype,以防万一。事实证明,更改类型会导致返回相同的对象。唯一的解决方案是让他们更改他们的 Web 服务实现和 WSDL,或者让我使用 for 循环。

标签: soap wsdl wsdl2java


【解决方案1】:

团队负责人提出的解决方案是使用 loop,因为 WSDL 和实际的 Web 服务行为表明 array 不支持参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2018-01-08
    • 1970-01-01
    • 2011-12-10
    • 2018-01-14
    相关资源
    最近更新 更多