首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 是否可以动态调用 WebServices解决方案

2012-02-26 
Delphi 是否可以动态调用 WebServices在DELHI中调用服务端写好的 WebServices 需要首先用WSDL Importer 将

Delphi 是否可以动态调用 WebServices
在DELHI中调用服务端写好的 WebServices 需要首先用WSDL Importer 将有关WebServices 的定义导入,
生成对应的PAS文件,然后才能调用。这样导致程序如果有新的WEB Services需要调用就需要改程序,
如何才能不修改程序就能调用新的WebServices呢?

比如知道一个Web Services 的 WSDL ,程序能否直接调用里的方法呢?

[解决办法]

Delphi(Pascal) code
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服务接口,可以在接口中留有备用参数
变动时再增加或修改这个备用参数的解析部分

热点排行