前面我们讲了使用swagger 生成java,php 的客户端调用函数原型。

对于delphi,其实很遗憾,不能直接生成客户端函数原型代码。

不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们就自产自销,

为kbmmw 客户端生成函数原型。也为我们前面说的双引擎提供服务。

闲话少说。

很简单

[kbmMW_Rest('method:get, path: "delphi", responseMimeType:"text/plain"')]
function DelphiAPI:string;
function TkbmMWCustomHTTPSmartService1.DelphiAPI: string;
var
unitName:string;
begin
// Return Delphi client stub unit for all methods in this service marked with
// kbmMW_Method attribute.
// Add 'servers: [ "url1", "url2",.. "urln" ]' to ASettings if you want to
// embed server location information in the comments of the returned unit.
Result:=TkbmMWSmartDelphiStubGenerator.GenerateDelphi('',self,unitName);
SetResponseFileName(unitName); end;

编译,运行。

在浏览器里面输入http://127.0.0.1/xalionrest/delphi

看看我们的函数原型都出来了。

我们把这个文件保存成pas 文件,放到客户端目录。

打开客户端工程。加入生成的单元。

客户端调用代码就非常简单了。

procedure TForm1.Button1Click(Sender: TObject);
var
c:IkbmMWSmartClient;
ca:TkbmMWSmartClientCaller;
s:string;
xalionrest: TXALIONREST;
begin
Transport.Host:=eIP.Text; xalionrest:= TXALIONREST.Create( Transport); s:=xalionrest.EchoString('abc'); memo1.Lines.Add('EchoString(''abc'')='+ s );
s:=xalionrest.version;
memo1.Lines.Add('version='+ s );
s:=xalionrest.AddNumbers(,);
memo1.Lines.Add('AddNumbers(34,7)='+ s );
xalionrest.Free;
end;

还是那么的完美。

我们还可以使用客户端访问服务器端的数据库服务

procedure TForm1.Button2Click(Sender: TObject);
var
xalionrest: TXALIONREST;
begin
Transport.Host:=eIP.Text;
xalionrest:= TXALIONREST.Create( Transport);
try
mt:=xalionrest.querytable('customer','');
mt.Active:=True;
datasource1.DataSet:=mt;
finally
xalionrest.Free;
end; end

运行结果

显示服务端图像

procedure TForm1.BitBtn1Click(Sender: TObject);
var
c:IkbmMWSmartClient;
s:string;
xalionrest: TXALIONREST;
b:Tbytes;
NewG: TJPEGImage; bs:Tbytesstream;
begin
Transport.Host:=eIP.Text; xalionrest:= TXALIONREST.Create( Transport); try
b:=xalionrest.GetImage('Boa') ; bs:=Tbytesstream.Create(b);
newg:=TJPEGImage.Create;
newg.LoadFromStream(bs);
image1.Picture.Graphic.Free;
image1.Picture.Graphic:=newg;
finally
bs.Free;
newg.Free;
xalionrest.Free;
end; end;

不能再简单了,否则大家就要失业了。

最新文章

  1. $("").click与onclick的区别示例介绍
  2. Python多行注释
  3. paip.java c# .net php python调用c++ c dll so windows api 总结
  4. CentOS中查看系统资源占用情况的命令
  5. (转)MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
  6. lua简洁的功能(两)
  7. 比较全的 C# 操作 Word的代码
  8. struts2中struts.xml 放置路径的问题
  9. Android TCP/IP 扫盲教程
  10. 关于webconsole报../website/console.go:35: undefined: ssh.InsecureIgnoreHostkey 错误解决方案
  11. Mathematica/偏导数/最小二乘法(线性回归)
  12. Struts2环境搭建和运用
  13. jsonp 跨域 jsonp 发音
  14. JS-隐士类型转换‘1’+1、‘1’-1、++‘1’为什么不一样?
  15. win7 怎么设置开机直接进入桌面? netplwiz 命令
  16. C#Lambda表达式详解
  17. with check(转)
  18. 安装SQL Server 2016出错提示:需要安装oracle JRE7 更新 51(64位)或更高版本完美解决办法
  19. JSTL详解(二)
  20. Dll 使用 PChar 参数的小例子 - 回复 "linximf" 的问题

热门文章

  1. Django11-ModelForm
  2. JavaScript字符串操作方法大全,包含ES6方法
  3. Android中 Git 使用中几个概念
  4. redis数据转移随笔
  5. 【原创】控制perl和python脚本执行过程中脚本文件是否关闭的方法
  6. 微信小程序---获取上传图片大小
  7. 使用其他分支替换master分支
  8. centos7 tomcat8+jdk1.8
  9. yum与rpm常用命令
  10. [Spring实战笔记]4面向切面编程的Spring-代理