使用kbmmw 生成客户端delphi函数原型
前面我们讲了使用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;

不能再简单了,否则大家就要失业了。
使用kbmmw 生成客户端delphi函数原型的更多相关文章
- 用内存流 文件流 资源生成客户端(Delphi开源)
正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...
- 使用kbmmw 生成REST 服务OpenAPI函数原型
我们以前介绍了很多kbmmw 开发REST 的例子.一直有个问题困惑着大家. 我们提供REST 服务,如何让客户端快速的使用,当然可以写文档,但是一旦 后台改变了,又要再一次给调用者发新文档,非常的麻 ...
- Delphi 函数指针(三大好处:灵活,委托的本质,回调机制),还可把函数指针当参数传入
首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...
- socket编程中客户端常用函数
1 常用函数 1.1 connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...
- 如何在gvim中安装autoproto自动显示函数原型
cankao: http://www.vim.org/scripts/script.php?script_id=1553 注意, 在gvim中执行的命令, :foo和:!foo 的区别, 跟vim一样 ...
- Delphi 如何在程序中执行动态生成的Delphi代码
如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...
- axis2生成客户端代码
通过aix2生成客户端代码需要准备相应的包,然后执行命令,步骤如下: 一.所需包准备 下载axis2-1.6.2-bin.zip,解压从lib包中取出 jaxrpc.jar wsdl4j-1.6.2. ...
- 转:Delphi 函数大全
Delphi 函数大全 - xiucaiyao的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xiucaiyao/article/details/4544039 名 ...
随机推荐
- Ingress介绍与安装配置
在 Kubernetes 集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力.您可以给 Ingress 配置提供外部可访问的 URL.负载均衡.SSL.基于名称的虚拟 ...
- javaSE基础知识
JVM,JRE,JDK三者的简单总结 1.见名解释 Java虚拟机(JVM):Java virtual machine简称JVM:“virtual”中文意思“虚拟的”,“machine”中文意思“机器 ...
- python运行时参数m的作用
不加m时,当前目录是py文件的所在目录 加m时,当前目录就是当前目录
- install virtual enviroment on windows
H:\>pip install virtualenv --install virtualenvCollecting virtualenv Downloading https://files.p ...
- Web开发敏捷之道应用Rails 进行Web开发(原书第4版)遇到的问题
第11章:建立一个基于Ajax的购物车 原书是这样的: 问题:create.js.rjs rails4算是彻底抛弃rjs了,所以按照书上使用以下代码,是一点作用没有用的. 这里介绍一种方法: 1.在a ...
- 吴裕雄 python 机器学习——ElasticNet回归
import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...
- 第一周pta作业1总结
查找整数 本题要求从输入的N个整数中查找给定的X.如果找到,输出X的位置(从0开始数):如果没有找到,输出"Not Found". 输入格式: 输入在第一行中给出两个正整数N(≤2 ...
- Linux系统中无iptables文件的解决
在RHEL 7 / CentOS 7中,firewalld被引入来管理iptables,CentOS7开始,默认是没有iptables的,而是使用firewall防火墙.本文将屏蔽掉firewall, ...
- 链接错误:multiple definition of 'xxx' 问题解决及其原理
内容借鉴 于CSDN炸鸡叔 错因 截图: “multiple definition of 'head' ” “multiple definition of 'tail' ” 解决过程: 1.首先要 ...
- Docker registry垃圾回收
Docker registry垃圾回收 通过: docker run -p 5000:5000 -v /netdata/xxxx/registry:/var/lib/registry registry ...