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的值的话会怎么样。有研究过的请指教下。