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