导航:
论坛 -> 文档资料
斑竹:liumazi,ruralboy
作者:
2013/1/28 15:02:16
标题:
Android手机访问QuickBurro+Delphi提供的服务
浏览:5893
加入我的收藏
楼主:
Basic4android 是一个简单但功能强大的 Android 应用开发环境。Basic4android 语言跟 Visual Basic 予以类似,支持更多的对象。Basic4android 将代 码编译成 Android 原生应用,无需其他运行环境的支持。Basic4android包含一个强大的GUI设计器,内建对多屏和坐标的支持,不需要开发者再写XML。 开发者可以在Basic4android环境下利用Android模拟器或Android物理设备(利用USB连接或通过本地网络连接)进行程序开发和调试。 Basic4android带有丰富的库函数,支持所有的Android 核心特性,因而使其非常容易进行高级应用开发。这些库函数包括:SQL数据库、GPS、串口(蓝牙)、照 相机、XML、JSON、Web服务(HTTP)、后台服务、动画、网络(TCP和UDP)、文本阅读(TTS)和声音识别、Web浏览、移动电话广告(AdMob)、图表、OpenGL、 图像,等等。 通过Basic4android 的HTTP组件或TCP组件,可以标准的HTTP协议形式访问QuickBurro中间件的Web服务,若指定URL为QuickBurro的虚拟页面,则会自动映射 到后台用Delphi写的同名ISAPI插件进行处理,所以,手机端(前台)Basic4Android类VB形式开发、后台Delphi开发——就可以很轻松编写客户端为手机的三层架 构应用程序了。下面是在下实现的一个小测试程序的Basic4Android代码: Sub Globals Dim b4a As String b4a = "http://10.1.74.7/webdemo/getrecorddemo.asq" End Sub Sub Activity_Create(FirstTime As Boolean) HttpUtils.CallbackActivity = "Main" 'Current activity name. HttpUtils.CallbackJobDoneSub = "JobDone" HttpUtils.Download("Job1", b4a) End Sub Sub JobDone (Job As String) Dim s As String If HttpUtils.IsSuccess(b4a) Then s = HttpUtils.GetString(b4a) End If Msgbox(s,"Response") End Sub 此段代码访问QuickBurro服务器上的ISAPI插件getrecorddemo.dll(对应虚拟页面getrecorddemo.asq),得到结果后以一个MessageBox形式显示出来。下面, 我们来看QuickBurro上的ISAPI插件getrecorddemo.dll的Delphi代码: // // GetRecordDemo.pas -- JsonRPC任务处理范例 - 读记录数据(简单起见,不再连接数据库,而是直接给出示例数据) // Date: 2011.9.15. Author: Jopher(W.G.Z) // library getrecorddemo; uses SysUtils,Classes,Windows,AdoDB, {$IFDEF UNICODE} AnsiStrings, {$ENDIF} QBParcel,QBJson,DllSpread; {$R *.RES} // // 主函数... function MainFunction(RequestParcel: TQBParcel; ResponseParcel: TQBParcel): boolean; var ResponseBody: AnsiString; Json: TQBJson; JsonArray: TQBJsonArray; begin // // 以ExtJS识别的UTF8格式编码结果数据,放ResponseParcel容器里... JsonArray:=TQBJsonArray.create; // Json:=TQBJson.Create; Json.Put('person_name','李先生'); Json.Put('person_sex','男'); Json.Put('person_telephone','1234567890'); JsonArray.put(Json); // Json:=TQBJson.Create; Json.Put('person_name','黄小姐'); Json.Put('person_sex','女'); Json.Put('person_telephone','1122334455'); JsonArray.put(Json); // Json:=TQBJson.Create; Json.Put('person_name','林老弟'); Json.Put('person_sex','男'); Json.Put('person_telephone','33776622341'); JsonArray.put(Json); // // 生成总的串... ResponseBody:=UTF8Encode(string(JsonArray.ToString)); ResponseParcel.PutAnsiStringGoods('ResponseBody',ResponseBody); // JsonArray.Free; result:=true; end; // // 导出函数,应用程序员不用改动... function WebpageProcess(InParcelPtr: integer; var OutParcelPtr: integer): boolean; stdcall; var aInParcel: TQBParcel; aOutParcel: TQBParcel; begin try aInParcel:=TQBParcel(InParcelPtr); except result:=false; exit; end; aOutParcel:=TQBParcel.Create; Result:=MainFunction(aInParcel,aOutParcel); if aOutParcel.GoodsCount<=0 then OutParcelPtr:=0 else OutParcelPtr:=Parcel2Mem(aOutParcel); aOutParcel.free; end; exports WebpageProcess; begin end. 以上代码直接给出了三个记录数据,您也可以在此先读数据库,再把记录组装成Json格式。 最后,我们在Basic4Android里编译手机端程序,并分别在模拟机和物理机上运行生成的.apk程序,得到了符合预期的结果。如下图所示:
此帖子包含附件: 大小: 99.7K
----------------------------------------------
樵夫的大马甲
作者:
2013/1/28 15:42:59
1楼:
我用Android KSOAP也实现了连接到RO DataAbstract的WebService(XML). 简单高效.在一Nexus 7上运行良好.
----------------------------------------------
-
作者:
2013/1/29 10:15:21
2楼:
Android 连接datasnap也很方便啊
----------------------------------------------
-
作者:
2013/1/29 11:30:33
3楼:
确实很简单,小菜一碟而已。并且,QuickBurro具备完善的“软总线”机制,只要根据手机端开发需要写个服务端dll就可,不用build整个服务端,开发就更省事啦。 RO、DataSnap...就不多说啦,说多了会引来好多战斗机的
----------------------------------------------
樵夫的大马甲
作者:
liai (风声雨泪)
★☆☆☆☆
-
盒子活跃会员
2013/3/7 11:07:06
4楼:
樵夫很快哦,我现在也在用Basic4android,很爽的,可惜你的例子不多,这样只能抛砖引玉,呵呵。
----------------------------------------------
简单才男人
作者:
2013/5/9 19:02:02
5楼:
软文一篇。我用RTC不比你的差.
----------------------------------------------
-
作者:
2013/5/16 20:15:27
6楼:
不要说硬文软文,本就是抛砖引玉 你们都厉害,俺最没用,好了吧。。。。呵呵
----------------------------------------------
樵夫的大马甲