【问题标题】:Can a SOAP operation have multiple outputs?SOAP 操作可以有多个输出吗?
【发布时间】:2015-04-30 21:20:56
【问题描述】:

在 WSDL 文件中定义的 SOAP 操作是否可以有多个输出?

例子:

<operation name="getUserInfo">
    <input message="getUserIdRequest"/>
    <output message="getUserNameResponse"/>
    <output message="getUserEmailResponse"/>
</operation>

如果我错了,请纠正我,答案应该是否定的,因为方法只返回一个元素。如果是这样,我该怎么做才能只使用一个操作来获取多个数据?

【问题讨论】:

  • 不,你不能有 2 个输出值。您可以构造一个输出值,其中包含多个值
  • 你的意思是这样的吗? &lt;message name="getTermResponse"&gt; &lt;part name="name" type="xs:string"/&gt; &lt;part name="email" type="xs:string"/&gt; &lt;/message&gt;&lt;operation name="getUserInfo"&gt; &lt;input message="getUserInfoRequest"/&gt; &lt;output message="getUserInfoResponse"/&gt; &lt;/operation&gt;
  • 是这样的
  • 感谢您的帮助。

标签: web-services soap wsdl


【解决方案1】:

您想要实现的是使用数组完成的。您可以使用复杂类型并将maxOccurs 属性设置为unbounded,以便在响应中创建一个类型的项目数组。

以下是此类类型的示例:

    <s:complexType name="MatterListType"> <!-- List -->
        <s:sequence>
            <s:element name="MatterItem" type="tns:MatterItemType" minOccurs="0" maxOccurs="unbounded"/>
        </s:sequence>
    </s:complexType>

查看不久前的this other answer of mine,我在其中更详细地解释了它是如何完成的。

如果您只需要多个不同的输出字段而不是数组,请将响应本身定义为复杂类型(您也可以在上面的示例中看到这一点)。

我希望这会有所帮助,如果我能进一步帮助您,请告诉我!祝你好运。

【讨论】:

  • 其实,你的另一个回答才是真正对我有帮助的:)
  • 没关系,重要的是你找到了你想要的!很高兴能帮上忙:)
猜你喜欢
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多