[英]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.