关于在dll中调用WebService的问题,100分相赠
各位好
最近写一个基于Webservice的客户端程序,ws也是用delphi写的,但在调用时出现了一些问题,请各位指教一下
delphi连接webservice自动生成的代码如下,我自己修改了下
现在有问题了,如果此单元直接放在exe里面调用的时候,一切正常,但是如果将该单元放在dll里面调用的时候,当debug到Result := (RIO as IWebServiceAPI);时就会出现Exception EIntfCastError的信息,导致dll不能正常工作
现在的情况是,最好也将该单元放在dll里面做成接口形式的,因为还有其他的dll需要调用它
我是不是忽略了什么,还是webservice本身就不能再dll里面调用
看网上说要加初始化什么的,我就加了下面这些,但是也不起作用
initialization
CoInitialize(nil);
finalization
CoUnInitialize;
最近写一个基于Webservice的客户端程序,ws也是用delphi写的,但在调用时出现了一些问题,请各位指教一下
delphi连接webservice自动生成的代码如下,我自己修改了下
..
IWebServiceAPI = interface(IInvokable)
..
function GetIWebServiceAPI(UseWSDL: Boolean; HTTPRIO: THTTPRIO): IWebServiceAPI;
var
RIO: THTTPRIO;
myIni: TiniFile;
cServer, defWSDL, defURL, defSvc, defPrt, Addr: string;
begin
myIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Param.ini');
cServer := myIni.ReadString('DataSource','Server','');
myIni.Free;
With HTTPRIO do
begin
defWSDL := cServer + RENT_SERVERWSDL;
defSvc := RENT_SERVERSERVICE;
defPrt := RENT_SERVERPORT;
defURL := cServer + RENT_SERVERSOAP;
end;
Result := nil;
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as IWebServiceAPI);
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;
现在有问题了,如果此单元直接放在exe里面调用的时候,一切正常,但是如果将该单元放在dll里面调用的时候,当debug到Result := (RIO as IWebServiceAPI);时就会出现Exception EIntfCastError的信息,导致dll不能正常工作
现在的情况是,最好也将该单元放在dll里面做成接口形式的,因为还有其他的dll需要调用它
我是不是忽略了什么,还是webservice本身就不能再dll里面调用
看网上说要加初始化什么的,我就加了下面这些,但是也不起作用
initialization
CoInitialize(nil);
finalization
CoUnInitialize;
...全文
相关推荐
SQLServer存储过程调用WebService
此外,在编写存储过程时,还需要注意安全性和性能优化等问题。
用工具生成MES的代理文件和dll
此DLL文件可以被其他应用程序直接引用,用于调用WebService中的方法。5.
转:pb12 开发 webservice 注意事项
**调试与异常处理**: - 在PowerBuilder中直接调用WebService时,可能会遇到一些问题。
upclass.txt
"C#开发的WebService上传函数,用于PB调用的DLL生成"在给定的代码中,我们看到一个C#编写的类库项目,它实现了用于上传功能的WebService接口,供PowerBuilder(PB
学生(班级)信息管理系统16.
选配项如.dll库、WebService的使用,以及调用数据库的视图和存储过程,可根据实际需求选择实现。数据库设计方面,要求至少包含5个表,且各表间存在引用关系,以保持参照完整性的约束。


网络通信/分布式开发
