请教各位高手,Delphi Program 如何动态更新 WebService IP Address ?Delphi Program 通过 WebService 控件包中的控件 HTTPRIO 来实现与 WebService 服务器来连接的。
里面会用到 WebService IP Address,这部分是写死在 *.pas 文件中的,如下红色字体——  defWSDL = 'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.asmx?WSDL';
  defURL = 'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.asmx';
  defSvc = 'PEGATRONSimulateDcsWebService';
  defPrt = 'PEGATRONSimulateDcsWebServiceSoap';这样的话,当 WebService IP Address 变更或者文件夹重新命名的话,就要修改程式中的这段代码,程式就要重新编译。
目前需要做的,就是动态更新 WebService IP Address,而不是现在这样写死。
临时解决方法——
安装第三方软件 ms SoapToolKit3.0 
uses 
  comobj; 
 
var 
  soap:OleVariant; 
begin 
  soap:=CreateOleObject('MSSOAP.SoapClient30'); 
  soap.mssoapinit(Edit1.Text);// WebService IP Address  
  showmessage( soap.helloworld ); 
end;其中,Edit1.Text 的内容可以在界面中手动输入
'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.wsdl'
或者写在INI文件中读取。这样就做到了动态变化。
但是,采用这个方法的话,Delphi Program 与 WebService 之间的联通就受到这个软件的制约,
Delphi Program 的效能可能会打折扣。
在此请教各位高手,有更好的方法么?
不使用第三方软件的方法。

解决方案 »

  1.   

    你就弄个配置文件不就可以了么,调用的wsdl位置哪有写死在程序里面的啊
      

  2.   

    请版主使用 WebService 控件包中的控件 HTTPRIO 来实现与 WebService 服务器连接。 Delphi7-->File-->New-->Other...-->WebService-->WSDL Importer-->Keyin IP Address-->Next-->Finish.
    你会发现,wsdl会生成一个*.pas文件, 
    WebService IP Address 这部分是写死在 *.pas 文件中的。
      

  3.   

    请版主使用 WebService 控件包中的控件 HTTPRIO 来实现与 WebService 服务器连接。 Delphi7-->File-->New-->Other...-->WebService-->WSDL Importer-->Keyin IP Address-->Next-->Finish.
    你会发现,wsdl会生成一个*.pas文件, 
    WebService IP Address 这部分是写死在 *.pas 文件中的。
      

  4.   

    导入的不是就是写死的.你修改ip改成个全局变量什么的,或者用方法从ini,xml等地方获取.
    把defWSDL,defURL 从const移到var里.
      

  5.   

      defWSDL = 'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.asmx?WSDL'; 
      defURL = 'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.asmx'; 
      defSvc = 'PEGATRONSimulateDcsWebService'; 
      defPrt = 'PEGATRONSimulateDcsWebServiceSoap'; 吧这部分放到一个过程里面,吧defWSDL和defURL作为参数传递进去,然后再需要用到的地方调用,就ok了。
      

  6.   

    忽然有点开窍了,我去把 2,7,8,9 四楼的方法验证下。使用 WebService 控件包中的控件 HTTPRIO 来实现与 WebService 服务器连接。 
    Delphi7-->File-->New-->Other...-->WebService-->WSDL Importer-->Keyin IP Address-->Next-->Finish. 
    你会发现,wsdl会生成一个*.pas文件, 
    WebService IP Address 这部分是写死在 *.pas 文件中的。这个Delphi自动产生出来的,不知道按照 2,7,8,9 四楼的方法是否可以修改。
    要试试。感谢先。