在 SOAP 中,一个函数是否可以返回不同的数据类型?

问题描述 投票:0回答:1

我需要构建一个托管函数的 SOAP Web 服务,该函数在特定场景中将返回 Object1 类型的对象,而在另一种场景中,同一函数将返回 Object2 类型的对象。可以这样做吗?如果是这样,我将如何将其写入 WSDL 文件中?此时,我有以下语法:

<wsdl:message name = "MyFunctionRequest">
  <wsdl:part name = "MyFunctionParameter" type = "xsd:int"/>
</wsdl:message>

<wsdl:message name = "MyFunctionResponse">
  <wsdl:part name = "MyFunctionReturnParameter" type = "tns:Object1"/>
</wsdl:message>

<wsdl:portType name = "MyFunctionPortType">
  <wsdl:operation name = "MyFunctionOperationName">
    <wsdl:input message = "tns:MyFunctionRequest"/>
    <wsdl:output message = "tns:MyFunctionResponse"/>
  </wsdl:operation>
</wsdl:portType>

有没有办法这样说:

<wsdl:part name = "MyFunctionReturnParameter" type = "tns:Object1|tns:Object2"/>
soap wsdl
1个回答
0
投票

您只能返回一个结果。

但是您可以将其设为包含 的元素。

<xsd:choice>
   <xsd:element name="one" ... />
   <xsd:element name="orTheOther" ... />
</xsd:choice>

您可以搜索一些示例

但请注意,某些 SOAP 客户端可能会遇到这方面的挑战。通常,当您生成客户端时,您选择的工具会根据 WSDL 中的元素生成类型。 可能意味着两个或多个不相关的类型。您可能会在方法/函数的签名中获得类似“Object”的通用类型,然后您必须检查它在方法/函数中属于哪种对象类型。合作起来有点尴尬。

© www.soinside.com 2019 - 2024. All rights reserved.