SOAP操作可以有多个输出吗?

时间:2015-04-30 10:22:55

标签: web-services soap wsdl

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

示例:

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

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

1 个答案:

答案 0 :(得分: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,我会更详细地解释它是如何完成的。

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

我希望这会有所帮助,请告诉我是否可以帮助您!祝你好运。