.net 調用Java WebService特殊情況記錄

1.非string類型數據無法傳遞

在工作中遇到過這樣一直情況,在調用JAVA的WebService,傳遞int等變量時,有時會發生數據丟失的情況。此情況並不是所有的非string變量都有出現。

出於好奇,查看了wsdl中是這樣對兩個變量進行描述的:

<xs:element minOccurs="0" name="type" type="xs:int" />
<xs:element name="type" type="xs:int" />

其中

<xs:element minOccurs="0" name="type" type="xs:int" />無法正常傳遞值。

<xs:element name="type" type="xs:int" />可以正常傳遞。

沒能看到這裏的兩個變量在JAVA中是如何定義的,暫不清楚是webService設置的原因還是JAVA中變量定義導致。

通過VS添加webSerivce引用,可以看到<xs:element minOccurs="0" name="type" type="xs:int" />這種類型,會生成如下數據:

(1)@type字段,int

(2)type屬性,int

(3)typeSpecified屬性,bool

此時如果設置type屬性後,沒有將typeSpecified設置爲true則,傳遞數據時不會傳遞type。

所以做webService動態調用時,需要檢查是否有對應的【Specified】屬性字段,並在需要傳輸時同步修改此值。

目前還不清楚,如果傳遞的數據中本身就存在typeSpecified的值的話會怎麼樣。有研究過的請指教下。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章