我使用 WebService 控件包中的控件 HTTPRIO 来实现与 WebService 服务器连接。 Delphi6-->File-->New-->Other...-->WebService-->WSDL Importer-->Keyin IP Address-->Next-->Finish.
会发现,wsdl会生成一个*.pas文件,
WebService IP Address 这部分是写死在 *.pas 文件中的。如下:defWSDL = 'http://111.111.111.111/cug/webservice/webservice_out.wsdl';
defURL = 'http://111.111.111.111/cug/webservice/webserviceserver.php';
defSvc = 'webserviceService';
defPrt = 'webserviceclassPort';
这样的话,当 WebService IP Address 变更或者文件夹重新命名的话,就要修改程式中的这段代码,程式就要重新编译。
目前需要做的,就是动态更新 WebService IP Address,而不是现在这样写死。如果采用配置文件的话,那么是只用变更上面四个参数么?能不能由配置文件导入WSDL的地址,动态生成的方法?在此请教各位高手该怎么修改!谢谢!
会发现,wsdl会生成一个*.pas文件,
WebService IP Address 这部分是写死在 *.pas 文件中的。如下:defWSDL = 'http://111.111.111.111/cug/webservice/webservice_out.wsdl';
defURL = 'http://111.111.111.111/cug/webservice/webserviceserver.php';
defSvc = 'webserviceService';
defPrt = 'webserviceclassPort';
这样的话,当 WebService IP Address 变更或者文件夹重新命名的话,就要修改程式中的这段代码,程式就要重新编译。
目前需要做的,就是动态更新 WebService IP Address,而不是现在这样写死。如果采用配置文件的话,那么是只用变更上面四个参数么?能不能由配置文件导入WSDL的地址,动态生成的方法?在此请教各位高手该怎么修改!谢谢!
function GetService1Soap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): Service1Soap;
const
defWSDL = 'http://111.111.111.111/cug/webservice/webservice_out.wsdl';
defURL = 'http://111.111.111.111/cug/webservice/webserviceserver.php';
defSvc = 'webserviceService';
defPrt = 'webserviceclassPort'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 Service1Soap);
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;
在调用这个函数的时候,你只要传参数进去就可以了