簡體   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