请教各位高手,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 的效能可能会打折扣。
在此请教各位高手,有更好的方法么?
不使用第三方软件的方法。
里面会用到 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 的效能可能会打折扣。
在此请教各位高手,有更好的方法么?
不使用第三方软件的方法。
你会发现,wsdl会生成一个*.pas文件,
WebService IP Address 这部分是写死在 *.pas 文件中的。
你会发现,wsdl会生成一个*.pas文件,
WebService IP Address 这部分是写死在 *.pas 文件中的。
把defWSDL,defURL 从const移到var里.
defURL = 'http://111.111.111.111/PEGATRONWebService/PEGATRONSimulateDcsWebService.asmx';
defSvc = 'PEGATRONSimulateDcsWebService';
defPrt = 'PEGATRONSimulateDcsWebServiceSoap'; 吧这部分放到一个过程里面,吧defWSDL和defURL作为参数传递进去,然后再需要用到的地方调用,就ok了。
Delphi7-->File-->New-->Other...-->WebService-->WSDL Importer-->Keyin IP Address-->Next-->Finish.
你会发现,wsdl会生成一个*.pas文件,
WebService IP Address 这部分是写死在 *.pas 文件中的。这个Delphi自动产生出来的,不知道按照 2,7,8,9 四楼的方法是否可以修改。
要试试。感谢先。