繁体   English   中英

调用Web服务时如何处理minoccurs =“ 0”?

[英]How to handle minoccurs=“0” when calling web services?

我有一个Web服务,我正在尝试使用大型机集成产品(DataDirect Shadow z / Services)进行调用,但是我的问题更多是一个一般性问题。 我想知道通常如何处理定义为minOccurs =“ 0”的元素。 我正在调用的第三方服务上的操作有一个complexType元素,其中所有元素都标记为minOccurs =“ 0”。

WSDL中的示例

<xs:element minOccurs="0" name="Request">
    <xs:complexType>
        <xs:sequence>
            <xs:element minOccurs="0" name="startDate" type="xs:dateTime"/>
            <xs:element minOccurs="0" name="endDate" type="xs:dateTime"/>
            <xs:element minOccurs="0" name="requestId" type="tns:ObjectName"/>
            <xs:element minOccurs="0" name="reasonCode" type="xs:string"/>
            <xs:element minOccurs="0" name="actionType" type="xs:string"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="option" type="xs:string"/>
            <xs:element minOccurs="0" name="comments" type="xs:string"/>
            <xs:element minOccurs="0" name="Name" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

该服务在另一端的工作方式,如果将值传递给该服务, 即使该值为null或空白或default ,该值也会在第三方系统上更新。 我需要一种方法来忽略服务有效负载中的该元素 一般如何处理? 我曾尝试使用C#作为此服务的客户端,但是我只能发现它们提供的是针对非原始类型的Specified后缀变量,但没有找到忽略原始类型的方法。 如果我打电话,只需此Web服务POST荷兰国际集团的SOAP消息发送到第三方的服务器,我可以简单地忽略,因为我不想传递值的XML,但我只是不知道如何不同的Web服务客户端实现处理这个问题。

如果有帮助,我相信第三方正在使用Apache Axis,并说他们可以省略可选参数。

当您尝试使用缺少默认/可选arg的xml部分进行POST时,您是否注意到服务器(apache轴)上该arg的任何更新? 如果您这样做了,那么可能是如何为该WSDL实现服务器端逻辑的(而不是严格遵守WSDL定义的合同/架构)。

我已经与3rd Party Web Services一起工作,该服务要求您传递具有Specified参数的所有可用标签的值。 只要设置Specified=false您就可以在其中传递几乎所有内容。

通常,您将使原始类型具有Specified标签以及处理诸如int, bool, double类的类型是一个问题,因为它们已定义了默认值,并且未设置Specified标签将导致这些值默认为其默认定义值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM