前几天做了linux下apache的开发,今天做一个linux 下的webservice ,以供客户端调用。
闲话少说,直接干。
新建一个工程。选other...,选择如图。
继续输入服务名
然后就生成对应的单元。
增加linux 平台。
完善对应的单元代码
{ Invokable implementation File for Txaliontest which implements Ixaliontest } unit xaliontestImpl; interface uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns, xaliontestIntf; type { Txaliontest } Txaliontest = class(TInvokableClass, Ixaliontest) public function echoname(const Value:string):string; stdcall; function sumall(const Value:integer):integer; stdcall; end; implementation { Txaliontest } function Txaliontest.echoname(const Value: string): string; begin result:=‘你好‘+value; end; function Txaliontest.sumall(const Value: integer): integer; var i:integer; isumall:integer; begin isumall:=0; for i := 1 to value do isumall:=isumall+i; result:=isumall; end; initialization { Invokable classes must be registered } InvRegistry.RegisterInvokableClass(Txaliontest); end.
{ Invokable interface Ixaliontest } unit xaliontestIntf; interface uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns; type { Invokable interfaces must derive from IInvokable } Ixaliontest = interface(IInvokable) [‘{20590E4A-BF8C-41AE-A630-94D2DD38EEE1}‘] { Methods of Invokable interface must not use the default } { calling convention; stdcall is recommended } function echoname(const Value:string):string; stdcall; function sumall(const Value:integer):integer; stdcall; end; implementation initialization { Invokable interfaces must be registered } InvRegistry.RegisterInterface(TypeInfo(Ixaliontest)); end.
编译本工程。
哎呀,怎么出错了?
不要害怕,这是因为linux 上apache的引用没有加入。我们确认apache 已经在linux上安装成功。
那么我们在IDE 里面处理一下。
记住设以上的地方为True, 允许未定义的引用。
现在重新编译
哈哈,OK 了
现在的任务就是在发布这个apache 模块。
这一块的内容请参照前面的文章。
配置文件如图:
启动apache.
在浏览器里面输入对应的地址,,就可以显示webservice 的接口信息了。
好了,服务端搞定了。我们做一个客户端来调用一下这个服务。
直接建一个vcl application .
然后选择WDSL 导入器。
输入对应的地址。
系统会生成对应的接口文件