delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
线程调用webservice出错了。。。 Delphi / Windows SDK/API
http://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传输过程不了解。谢谢大家关注。

posted on 2009-03-02 11:33 delphi2007 阅读(550) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。