DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a12315
今日帖子: 46
在线用户: 9
导航: 论坛 -> 文档资料 斑竹:liumazi,ruralboy  
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
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程序,得到了符合预期的结果。如下图所示:
此帖子包含附件:
JPEG 图像
大小:99.7K
----------------------------------------------
樵夫的大马甲
作者:
男 he_19_79 (he) ▲▲▲▲▲ -
普通会员
2013/1/28 15:42:59
1楼: 我用Android KSOAP也实现了连接到RO DataAbstract的WebService(XML). 简单高效.在一Nexus 7上运行良好.
----------------------------------------------
-
作者:
男 mochizuki (mochizuki) ★☆☆☆☆ -
普通会员
2013/1/29 10:15:21
2楼: Android 连接datasnap也很方便啊
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2013/1/29 11:30:33
3楼: 确实很简单,小菜一碟而已。并且,QuickBurro具备完善的“软总线”机制,只要根据手机端开发需要写个服务端dll就可,不用build整个服务端,开发就更省事啦。

RO、DataSnap...就不多说啦,说多了会引来好多战斗机的
----------------------------------------------
樵夫的大马甲
作者:
男 liai (风声雨泪) ★☆☆☆☆ -
盒子活跃会员
2013/3/7 11:07:06
4楼: 樵夫很快哦,我现在也在用Basic4android,很爽的,可惜你的例子不多,这样只能抛砖引玉,呵呵。
----------------------------------------------
简单才男人
作者:
男 chinaren007 (erewr) ★☆☆☆☆ -
普通会员
2013/5/9 19:02:02
5楼: 软文一篇。我用RTC不比你的差.
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2013/5/16 20:15:27
6楼: 不要说硬文软文,本就是抛砖引玉
你们都厉害,俺最没用,好了吧。。。。呵呵
----------------------------------------------
樵夫的大马甲
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行85.9375毫秒 RSS