使用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 名 ...
随机推荐
- 004之MFCSocket同步编程(指针机制)
异步与同步通信相比较,前者是非阻塞模式,后者是阻塞模式.有关两者差异在此博主中有详细讲解,推荐:https://www.cnblogs.com/wzsblogs/p/4671559.html. 采用同 ...
- 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...
- Django项目创建
一.创建方式 1.命令行创建: 2.pycharm创建项目: 二.创建MySQL数据库 三.修改配置文件链接数据库 修改python连接数据库方式 四.Django配置 1.添加app项目 2.修改h ...
- Navicat远程连接不上mysql解决方案
一.can‘t connect to MySql server on ‘47.93.X.X’ 这是因为mysql端口被防火墙拦截,需用linux执行如下指令: 1.#/sbin/iptables -I ...
- elk报警监控之sentinl 钉钉+邮件告警
注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...
- LR常用函数
web_set_max_html_param_len()--常用函数 设置可检索并保存为参数的任何HTML字符串的最大长度. intweb_set_max_html_param_len(const c ...
- Interlij idea
https://blog.csdn.net/qq_30180559/article/details/79146795 http://baijiahao.baidu.com/s?id=157736618 ...
- 2017-11-10 Fr Oct 消参
2017-11-04 Sa $ P(-3, 0) $ 在圆C $ (x-3)^2 + y^2 = 8^2 $ 内,动圆M与圆相切且过P点,求M点轨迹. 设切点 $ A(a, b) $,圆心 \(M(x ...
- IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 Industry Track Call for Papers
IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 In ...
- 【C++】纯C++实现http打开网页下载内容的功能
#include "stdafx.h" #include <windows.h> #include <iostream> #include "Wi ...