Delphi呼叫Java WebService(特別注意介面引數名字)
阿新 • • 發佈:2019-02-07
最近做NC(java)和HIS(delphi)對接遇到這個問題,兩邊開發搞了兩三天,終於搞明白了。
1、delphi呼叫java webservice,介面可以被呼叫,但收到引數都為空,從網上查了好多辦法,很多說註釋掉就可以了,但我這注釋掉還是不好用。介面接收到引數仍然是null
// InvRegistry.RegisterInvokeOptions(TypeInfo(INewServicePortType), ioDocument);
2、解決辦法:(1)註釋掉上面哪行;(2)java釋出的webservice方法引數名稱避免與delphi關鍵字衝突。介面方法兩個引數本來是type和param,然後type是delphi中關鍵字,改成busibype,測試通過。
一、delphi呼叫webservice步驟
使用的開發環境:Java1.7;Delphi XE2
1、Componet→import WSDL、填寫wsdl地址、然後next→next→finished
開發工具會自動生成一個介面呼叫的客戶端檔案。
2、修改生成的檔案,第三行註釋掉,至於為什麼註釋掉,我也不知道。
生成的檔案中,注入的介面方法引數名和返回值型別需要跟webservice完全一致。
java介面:
delphi wsdl生成客戶端檔案:
3、delphi呼叫
經過測試,呼叫成功
以上經過本人基於現有環境測試,沒有測試多個版本,純屬測試後的個人觀點,如有不恰當之處,請大家指正。