Delphi 是否可以动态调用 WebServices
在DELHI中调用服务端写好的 WebServices 需要首先用WSDL Importer 将有关WebServices 的定义导入,
生成对应的PAS文件,然后才能调用。这样导致程序如果有新的WEB Services需要调用就需要改程序,
如何才能不修改程序就能调用新的WebServices呢?
比如知道一个Web Services 的 WSDL ,程序能否直接调用里的方法呢?
[解决办法]
function GetRemoteDBService(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): RemoteDBService;const defWSDL = 'http://127.0.0.1:9080/services/RemoteDBService?wsdl'; defURL = 'http://127.0.0.1:9080/services/RemoteDBService'; defSvc = 'RemoteDBServiceService'; defPrt = 'RemoteDBService';var RIO: THTTPRIO;begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as RemoteDBService); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end;end;
[解决办法]
这个比较困难,我以前也找了N久的代码,我还没有找到对应的方法
兄弟如果找到,告诉我一下啊
JAVA,C# 的好像是可以的
[解决办法]
很多年前用DELPHI调过WEBService,所有一切可以在IDE完成的,用代码都可以完成。
[解决办法]
只要服务器的方法参数或返回值没有改变的,客户端可以不用修改的。服务器的方法参数修改了,无论用什么的开发工具,客户端都要修改程序代码。
[解决办法]
接口参数变了,就是协议修改了,代码变动确实难免
但如果已预见到会变,为了回避修改WEB服务接口,可以在接口中留有备用参数
变动时再增加或修改这个备用参数的解析部分