线程调用webservice出错了。。。 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiNetwork/html/delphi_20061201110329221.html
var
ht:Thttprio;
it1:Ifilews;
markinfo:integer;
begin
try
ht:=THTTPRIO.Create(nil);
//it1:=getIfilews(true,'',ht);
it1:=getifilews; ===================>如果是线程,这里会出错
markinfo:=it1.isfileExists('e:\12.txt');
if markinfo=0 then
begin
self.Caption :='文件存在';
end
else
begin
self.Caption:='文件不存在';
end;
finally
ht.Free;
end;
end;
//就以上这段代码,
//在主界面ok,线程中这些代码就出现Abstract Error的错误
//怎么找都找不到原因,到底为什么?
由此看到Delphi人气不行......
从你的表述上看,这个问题与WebService没有关系.我想问问,你在你的测试线程中去实现了Execute这个方法了吗?
你们这些捣蛋鬼.人家是很认真问问题的,不是说笑的哈.
请妖哥,把这个问题好好解释.
如果解释不清,就扣你10000分.
解释好了老冯给你一颗LOLLIPOP.
对不起,发错了。
哎。。。没有人来。。。。
TThread是抽象类, 请LZ看看在你的测试线程中没有去实现EXECUTE?
我把上面那一段拷贝到线程的EXECUTE了
问题就是如上所说
把涉及到的webservice那几行注掉看看
getifilews里面是什么??
另: 线程里面就没有caption了
在线程中使用,代码要加上 CoInitialize与 CoUnInitialize
//线程开始
CoInitialize(nil);
try
...//创建RIO
...//调用
finally
CoUnInitialize;
end;
====
在Create和Destory里我做了CoInitialize(nil); CoUnInitialize;
====
GetIfilews是获得接口的方法,由WSDL import 生成。
====
现在错误如下:
//在主界面ok,线程中这些代码就出现Abstract Error的错误
网络上查是说将接口实例化,但是我不知道该怎么改正这个错误。
各位达人能不能给个更清晰的说法啊?
主要问题就在GetIfilews里面了,
另
GetIfilews是获得接口的方法,由WSDL import 生成 不是很明白
我感觉就是GetIfilews这个函数里面的问题,就看里面做了些什么内容了,应该和函数处理有关系的
哎~~
GetIfilews 没有问题。是我的问题。
这样才ok
CoInitialize(nil);
try
ht:=THTTPRIO.Create(nil);
ht.URL:='http://../webservicetest/Filews.dll/soap/ifilews';
ht.WSDLLocation:='http://../webservicetest/Filews.dll/wsdl/ifilews';
ht.Service:='Ifilewsservic'
ht.Port:='ifilewsPort';
it1:=ht as Ifilews;
it1.xxx(...)
finally
CoUnInitialize;
end;
归根到底还是自己对WebService传输过程不了解。谢谢大家关注。