用C#.NET調用Java開發的WebService傳遞int,double問題,出現java無法獲得值!


用C#.NET調用Java開發的WebService時,先在客戶端封裝的帶有int屬性的對象,當將該對象傳到服務器端時,服務器端可以得到string類型的屬性值,卻不能得到int類型、double和DateTime類型的值(在服務端得到的均為null) 解決辦法: VS2005封裝WebService引用

用C#.NET調用Java開發的WebService時,先在客戶端封裝的帶有int屬性的對象,當將該對象傳到服務器端時,服務器端可以得到string類型的屬性值,卻不能得到int類型、double和DateTime類型的值(在服務端得到的均為null)

解決辦法:

VS2005封裝WebService引用時,如果WebService發布的是一個基本數據類型組成的對象,則會對該對象的非string屬性同時生成兩個屬性,一般是這樣的"屬性××"、"屬性××Specified"。而"屬性名Specified"是一個bool類型,只有這個屬性被設置成true時,"屬性××"的值才會被序列化成xml傳遞。

同樣的道理,用.NET提供WebService給JAVA調用時,如果是一個基本數據類型組成的對象,則會對該對象的非string屬性同時生成兩個屬性,一般是這樣的"屬性××"、"屬性××Specified"。如果不將“屬性××Specified”設置為true的話,服務端得到的數據將是null。解決辦法就是把“屬性××Specified”設置為true或者把“屬性××Specified”刪掉。

資料:http://msdn.microsoft.com/zh-cn/library/system.xml.xmlattribute.specified(VS.80).aspx

.NET Framework 類庫

XmlAttribute.Specified 屬性

獲取一個值,該值指示是否顯式設置了屬性值。

命名空間:System.Xml

程序集:System.Xml(在 system.xml.dll 中)

屬性值

如果在原始實例文檔中顯式地為該屬性給定一個值,則為 true;否則為 false。false 值指示該屬性的值來自 DTD。

備注

該屬性是由實現負責的,而不是用戶。如果用戶更改該屬性的值(即使它最后與默認/固定值具有相同的值),Specified 標志就會自動轉為 true。若要重新將該屬性指定為 DTD 中的默認/固定值,則用戶必須刪除該屬性。然后,實現提供一個新屬性,其 Specified 設置為 false,並具有默認/固定值(如果存在的話)。

摘要:

如果屬性具有文檔中的分配值,則 Specified 為 true,並且該值是分配值。

如果屬性沒有文檔中的分配值,而具有 DTD 中的默認/固定值,則 Specified 為 false,該值是 DTD 中的默認/固定值。

否則,該屬性不出現在文檔的結構模型中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM