一步一步用Delphi6实现Web Service :: freedom2

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=10018 存档链接: https://web.archive.org/web/20041210121937id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=10018


freedom2-自由天空-闲人的日记 [b]呼吸一下新鲜空气吧[/b] <<<我向往的GE公司 首席教育官演讲--自勉 | 首页 | 昨夜,因为家里的事我有点失眠>>> 一步一步用Delphi6实现Web Service 时间:2003-06-04 发信人: lyman (秋风吹,黄叶飘), 信区: Delphi 标 题: 一步一步用Delphi6实现Web Service 发信站: 南京大学小百合站 (Sat Dec 8 23:21:48 2001) http://www.csdn.net/develop/read_article.asp?id=11123 本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提 供给各种客户程序调用。 一编写服务程序 第一步:File----->New----->Other------>WebServices----->Soap Server Applicatio n 选择ISAPI/NSAPI Dynamic Link Library然后确定。生成一个框架。后面的大部分原代码 都需要自己手工添加 第二步:定义一个接口单元。先通过向导生成一个空的单元文件,然后在此单元中实现基 本的接口(Iinvokable)和定义以后客户端程序可以调用的方法,原代码如下: unit unit1; interface uses InvokeRegistry;//基本的结构和方法的定义都在此单元中,必须引用 type IWebTest=interface(Iinvokable)//自定义的一个结构,继承自Iinvokable ['{A436B0D2-D490-4C80-820A-355D979E8704}']//通过Ctrl+Shift+G生成的一个GUID function gettext():widestring;stdcall;//自定义的一个方法,也是以后客户可以调用 的方法 end; implementation initialization//初始化 InvRegistry.RegisterInterface(Typeinfo(IWebTest));//通过此方法来注册接口 end. 第三步:实现第二步中所定义的接口和方法。先通过向导生成一个空的单元文件,然后定 义自定义接口(IWebtest)的实现类。原代码如下: unit Unit2; interface uses InvokeRegistry,Unit1;//引用自定义的接口单元 type TWebTest=class(TInvokableClass,IWebTest)//定义实现类,此类必须继承自TInvokable Class,并实现自定义接口 protected function gettext():widestring;stdcall;//申明在自定义接口中所定义的方法 end; implementation { Test } procedure createwebtest(out obj:tobject);//此过程为创建类实例,必须手工添加 begin obj:=TWebTest.Create;//创建类实例 end; function TWebTest.gettext: widestring;//实现自定义方法 begin Result:='Success'; end; initialization//初始化 InvRegistry.RegisterInvokableClass(TWebTest,createwebtest);//注册自定义类 end. 第四步:编译整个应用程序,即产生一个*.dll的程序,把此程序拷贝到IIS的Cgi-bin目录 下(或者其他可执行的目录,要根据自己的目录来选择),然后即可通过以下方式的链接 访问到Wsdl:http://192.168.1.222/cgi-bin/*.dll/wsdl访问到以XML方式编码的Wsdl文 件了,这就是客户端程序调用需要的文件。其中*.dll为你自己的应用程序的名字。192.1 68.1.222为你的Web服务器地址。Cgi-bin为你的Web服务器的可以执行Cgi程序的目录名称 。 二编写客户程序: 第一步:新建一个Application。 第二步:File----->New----->Other------>WebServices----->Soap Services Importer 然后在Wsdl or Xml Schema Location中填入:http://192.168.1.222/cgi-bin/*.dll/ws dl/IWebTest,然后确定即生成了一个新的接口定义单元。 第二步:在主form上放上一个按钮和一个Httprio组件(在WebServices页上),并引用第 二个单元(即通过Soap Services Importer自动生成的单元) 在Httprio的属性页上的WsdlLocation里面填上http://192.168.1.222/cgi-bin/*.dll/ws dl/IWebTest;然后在Httprio属性页上的Port和Service上选择上相应的数据即可。 第三步:书写客户调用程序,原代码如下: procedure TForm1.Button1Click(Sender: TObject); var testobj:IWebTest;//定义对象 begin testobj:=Httprio1 as IWebTest;//创建对象 showmessage(testobj.gettext);//调用方法 end; 以上是一个简单的例子,有兴趣的可以和我讨论。以上的例子还用java客户调用通过。我 的邮箱是coala@21cn.com freedom2 发表于 2003-06-04 13:24 引用Trackback(0) | 编辑 评论 发表评论 最后更新 看到第六张,我哭了,我已无语 “杀人游戏” 昨夜,因为家里的事我有点失眠 一步一步用Delphi6实现Web Service 我向往的GE公司 首席教育官演讲--自勉 感受一下上上个世纪!中国最老的照片 今天是传统端午节,自贺一篇 母亲生病了:$ 《Java 编程思想》2/e 简体勘误