【工作記錄0022】C#(.NET)調用Java開發的WebService(wsdl),客戶端傳遞非string類型參數(int,double,bool等),而服務端無法獲取到參數值的解決方案

C#(.NET)調用Java開發的WebService(wsdl),客戶端傳遞非string類型參數(int,double,bool等),而服務端無法獲取到參數值的解決方案:

       使用visual studio創建的解決方案項目中,在調用java開發的webservice時,需要先“添加服務引用”,在項目上右鍵->添加->服務引用->輸入wsdl路徑,自定義命名空間,確定即可。.net在創建服務引用的時候,如果wsdl是java開發的,則.net在初始化調用類時,會對類對象中的非string成員變量生成兩個變量,例如http請求中有類成員A,則會生成"A" 和 "ASpecified" 兩個成員變量,你可以理解爲帶有 "Specified" 結尾的變量成員是其同名變量的有效性標記,即 只有設置 “ASpecified = true”,服務端在接受http請求時,才能成功的獲取到 “A” 參數,否則獲取不到“A”,即A = null。還有另一種方法是將帶有“Specified”結尾的變量成員默認爲true,或者刪除掉,但其實我個人不建議這樣做,因爲.net在添加服務引用時,http請求類都是自動生成的代碼,如果修改了可能會引起其他異常。

       總結:在需要提交非string類型參數的地方,設置參數“A = XXX”的同時,請設置“ASpecified = true”。

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