Delphi 编写的Web Service
-
第一步:File----->New----->Other------>WebServices----->Soap Server Application
选择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;
implementationinitialization//初始化
InvRegistry.RegisterInterface(Typeinfo(IWebTest));//通过此方法来注册接口
end.第三步:实现第二步中所定义的接口和方法。先通过向导生成一个空的单元文件,然后定义自定义接口(IWebtest)的实现类。原代码如下:
unit Unit2;
interface
uses InvokeRegistry,Unit1;//引用自定义的接口单元
type
TWebTest=class(TInvokableClass,IWebTest)//定义实现类,此类必须继承自TInvokableClass,并实现自定义接口
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.168.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/wsdl/IWebTest,然后确定即生成了一个新的接口定义单元。
第二步:在主form上放上一个按钮和一个Httprio组件(在WebServices页上),并引用第二个单元(即通过Soap Services Importer自动生成的单元)
在Httprio的属性页上的WsdlLocation里面填上http://192.168.1.222/cgi-bin/*.dll/wsdl/IWebTest;然后在Httprio属性页上的Port和Service上选择上相应的数据即可。
第三步:书写客户调用程序,原代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
testobj:IWebTest;//定义对象
begin
testobj:=Httprio1 as IWebTest;//创建对象
showmessage(testobj.gettext);//调用方法
end;在开发WebService 时,客户端调用出现Received content of invalid Content-Type setting:text/html - SOAP expects "text/xml"服务类型为ISAPI解决方法:将服务器webservice .dpr 文件 ISAPIThreadPool,ISAPIApp,调换一下位置.开发环境为: Delphi7 + MS SQL2000+WINDOWS 2K PRO
一编写服务程序
Delphi 编写的Web Service的更多相关文章
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析)
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...
- Web Service学习笔记
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析) (转)
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...
- Web Service概述 及 应用案例
Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用 ...
- 编写一个单独的Web Service for Delphi
早段时间看了一篇好文章,对其整理成以下几步 1新建一个SOAP Server Application,在提示输入接口时输入MyHello,把所有文件保存在一个叫Ser的目录下,其中一个包含TWebMo ...
- delphi调用web service出现 Unable to retrieve the URL endpoint for Service/Port .....
delphi调用web service出现 Unable to retrieve the URL endpoint for Service/Port, 错误截图如下 查了很长时间, 发现在DataM ...
- 编写一个单独的Web Service for Delphi7(步骤)
1新建一个SOAP Server Application,在提示输入接口时输入MyHello,把所有文件保存在一个叫Ser的目录下,其中一个包含TWebModule1的文件保存为main.pas.在M ...
- Delphi Web Service和ISAPI的区别与联系 转
Web Service和ISAPI的区别与联系 1.Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service ...
- 用Delphi7开发Web Service程序 转
转:http://rosehacker.blog.51cto.com/2528968/450160 用Delphi7开发Web Service程序,并把服务程序放在IIS Web服务器上提供给 ...
随机推荐
- PHP提高编程效率的方法,你知道多少呢?
PHP语言是最WEB的计算机语言,而且也是应用最广泛的语言,那么PHP对编程的影响有多大呢?下面可以去了解一下. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜 ...
- WEB 中的一些名词解释
OOP: 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构. AOP: AOP为Aspect Oriented Programmin ...
- 7-1 DBA顾问培训内容@20141230
1, 逻辑读还是物理读? 查询语句的实际执行计划. F5 预计执行计划. --如何产生实际执行计划 ??. --Session收集指令. workload repository report fo ...
- JavaScript的push(),pop(),concat()方法
push 方法 将新元素添加到一个数组中,并返回数组的新长度值. arrayObj.push([item1 [item2 [. . . [itemN ]]]]) 参数 arrayObj 必选项.一个 ...
- Codevs 1082 线段树练习 3
1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Maste 传送门 题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的 ...
- VMware虚拟机中如何安装VMWare-Tools详解
VMware虚拟机中如何安装VMWare-Tools详解 好处:可以支持图形界面,可以支持共享文件功能等 VMware虚拟机中如何配置显 VMware作为一款虚拟机利器,很多人都利用它来实现Linux ...
- 分享一个自己写的基于TP的关系模型(三)
这段时间对模型做了升级和优化,并将版本更新到TP3.2. 下载 下载后请将目录放置TP的Library目录下 1.数据节点优化,原来的节点为模型的名称或者表名,现在更新为定义关系的方法名 public ...
- mongo数据库使用小结
db.userId5555.aggregate({$unwind:"$tcjl"},{$match:{"_id":"0e549864-2a56-43c ...
- gridview列前加复选框需要注意的一点
前言 获取gridview每一列前面的复选框,然后获取选中的这一行的id.aspx页面,我不喜欢用这个,有的公司用自己封装的,基本上都是用封装的,这是我知道的.也有用Repeater的.可能是因为gr ...
- Android DropBoxManager Service
Android DropBoxManager Service 什么是 DropBoxManager ? Enqueues chunks of data (from various sources – ...