使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务

    RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了

大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧。由于RTC 是从底层通讯做起的,因此通讯层的

功能非常强,但是在中间层数据库功能虽然有所实现,但是没有kbmmw 和RO 强,但是对于普通的远程调用做的非常优雅。

同时它重点在于使用http 协议实现功能调用,因此与kbmmw 的适合场合不完全一样。

   由于RTC 可以非常快速的建立一个webserver, 因此要实现basic4android 程序访问RTC 的http 非常方便,但是由于直接访问

http 文本,服务器端与客户端都要做解析,不但编码起来麻烦,而且容易出问题。RTC 没有提供和KBMMW 一样的Java 客户端,

只能通过别的方式使basic4android 直接访问RTC 的远程函数,经过研究,发现RTC 支持XMLRPC远程调用,好,就拿这个开刀吧。

找了一下basic4android 的网站,呵呵,找到我们要的东西了,XMLRPC Library。  下载后解包,放到basic4android 的lib 目录。

   现在回到delphi 里面,先做一个简单RTC 应用服务器。

在form 上放置四个rtc 的控件

   server: TRtcHttpServer;
    RtcServerModule1: TRtcServerModule;
    RtcFunctionGroup1: TRtcFunctionGroup;
    RtcFunction1: TRtcFunction;

并放置一个按钮

对应的属性:

注意要设置ModuleFileName 为test.

procedure TForm1.Button1Click(Sender: TObject);
begin
   server.Listen();
   Button1.Caption:='已启动';
   Button1.Enabled:=False;
end;

 rtcfunction1 的执行代码为

procedure TForm2.RtcFunction1Execute(Sender: TRtcConnection;
  Param: TRtcFunctionInfo; Result: TRtcValue);
var
  num,allnum:integer;
  mynum:TRtcArray;
  i: Integer;
begin
    mynum:=param.asArray['params'];
    num:=mynum[0];
    allnum:=0;
    for i := 1 to num do
     allnum:=allnum+i;
    result.asInteger:=allnum;

end;

好了,服务器代码完成,编译运行,并点击启动按钮。

客户端,我们就利用XMLRPC Library自身所带的 例子,稍微改动一下,以便于对应我们的服务器。

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        XMLRPC1.Initialize("XMLRPC1")
    End If
    
    Activity.AddMenuItem("initXMLRPC","mnuXMLRPC")
    Activity.AddMenuItem("Call Method","mnuMethod")
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub mnuXMLRPC_Click
    XMLRPC1.initXMLRPCClient("http://192.168.1.105/test")
End Sub

Sub mnuMethod_Click
    'check whether x Is inside range 4..10
    Dim x As Int
    x = 100
    s=XMLRPC1.intCall("sumall",x)
   Msgbox(s,"")
    
    
     ' XMLRPC1.booleanCall3("isInside", x, 4, 10)
End Sub

好了,运行android 客户端,点击菜单,就会出现下面的界面。

 

好了,打完收工。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值