使用delphi 10.2 开发linux 上的webservice

时间:2022-02-17 07:49:56

前几天做了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 导入器。

输入对应的地址。

系统会生成对应的接口文件