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的值的話會怎麼樣。有研究過的請指教下。