DELPHI XE5开发WEB服务器及安卓手机客户端[通俗易懂]

DELPHI XE5开发WEB服务器及安卓手机客户端[通俗易懂]Xe5开发web服务端和手机客户端时间:2013-9-1817:09:45点击: 6456Delphixe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快,把VS2012远远甩在后面。下面以一个小例作为您开启新的历程: 建立一个webservices stand-alonevclapplication作为手机访问的服务端1、new-

大家好,又见面了,我是你们的朋友全栈君。

Xe5开发web服务端和手机客户端

时间:2013-9-18 17:09:45 点击: 6456

Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快,把VS2012远远甩在后面。下面以一个小例作为您开启新的历程:

 建立一个webservices  stand-alone vcl application 作为手机访问的服务端

1、new->other->webservices

558×384

 

558×418

2、选择 stand-alone vcl application

523×511

3、这里使用 默认端口8080

524×512

4、选择创建接口

561×300

5、给服务起个名字

448×206

6、点ok后保存工程,保存为目录如下:

273×219

7、至此为止,什么代码都不写,点击运行,我们看到

407×262

8、启动并点击 open browser按钮在浏览器里看到916×395

 

一个web服务就创建完成了。

接下来创建一个返回数据集的过程,用webservices发布,供手机端调用。这里我使用firedac

1、打开上一篇自动创建的WebModule

   然后分别拖放以下数据连接控件

    FDConnection1:firedac连接数据库的
    FDPhysMSSQLDriverLink1: 数据驱动 选的是sqlserver ,另外还有 db2 ,oracle,acess ,excel ,sqllite,mysql等
    FDQuery1: 相当于adoquery
    DataSetProvider1:delphi的provider
    ClientDataSet1: delphi的我最喜欢的cds

 2、数据库的连接

     首先用  FDConnection1 连接sqlserver服务器,在控件上邮件 设置一下信息

      543×599

     3、其他数据控件连接

        FDquery1已经自动连上了connection,我们在sql里写以下语句

634×445

         接下来 DataSetProvider1 连好fdquery1,clientdataset1的providername选择 DataSetProvider1

 

 

  4、在WebModule 中的public中实现以下代码

   function TAndroidWM.GetEmployee_Mi: widestring;
    begin
     with clientdataset1 do
     begin
       close;
       open;
       result:=xmldata;
       close;
     end;
    end;

  5、在AdroidServicesImpl.pas 引用WebModule 的接口实现的public单元实现以下代码

     function GetEmployee_mi:widestring;stdcall;

      function TAdroidServices.GetEmployee_mi: string;
    var
      dm:TAndroidWM;
    begin
      dm:=TAndroidWM.Create(nil);
      result:=dm.GetEmployee_Mi;
      dm.Free;
   end;

6、在 AdroidServicesIntf.pas 单元实现以下代码

 

type

  IAdroidServices = interface(IInvokable)   [‘{9B1596C5-AD43-4849-830E-0B82D8BAA043}’]  

  function GetEmployee_mi:widestring;stdcall;  

  end;

 

  6、运行server 查看webservice是否实现了GetEmployee_mi服务

     684×415

    服务端至此完成,实现了用clientdataset的xmldata返回数据集的过程,当然您可以对返回的xml进行压缩和解压缩的操作,减小网络传输压力。

我们把供手机端调用的web服务完成,接下来实现手机端调用webservices获取数据

 

1、新建firemonkey mobile application

560×370

2、选择blank application

   780×593

3、这里选择分辨率,我用的手机是三星的p3100,没别的优点 就是大,7寸的屏,我女儿管这个叫平板手机  O(∩_∩)O~

825×522

4、界面布局摆放如下: 

1359×355

5、绑定数据集

   xe5中使用livebingding来绑定数据集,没有datasource熟悉了,理论上所有的控件都可以绑定数据集。

   先在clintdataset中添加字段

       745×456

依次添加 code ,name ,py_code 三个字段,然后选中grid,点击264×37,然后将dataset拖拉到grid中:如图

1081×591

当然,您要选择clientdataset1下的这个*号再拖拽,,这就完成了绑定。。。

 然后调整列宽等选项。

 界面就这样吧,继续。。。,先启动咱们上几片文章建立的手机服务端

          405×266

    导入webservices单元,file->new->other->webservices->选择 wsdlimporter

      824×444

   输入wsdl地址  http://localhost:8080/wsdl/IAdroidServices

      527×417

 

之后施展一路回车大法,只到生成一个单元文件保存并在手机窗体单元中引用。

在窗体上的按钮的click事件中实现以下代码:

procedure TForm1.button1Click(Sender: TObject);
  var
  ws:IAdroidServices;
  s:string;
begin
  ws:=GetIAdroidServices(true,’http://10.110.0.56:8080/soap/IAdroidServices’,nil);   //参数中可以使用配置的url
  s:=ws.GetEmployee_mi;
  if length(s)<>0 then
  clientdataset1.xmldata:=s;
end;

 

   可以在win32平台上先测试一下,如图:

630×596

 win32平台上没问题 ok,接下来target选择我的 大平板手机 O(∩_∩)O~ ,p3100

运行如下:

278×442

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161312.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言程序设计打卡系统,C语言程序设计报告书学生考勤系统设计.doc[通俗易懂]

    c语言程序设计打卡系统,C语言程序设计报告书学生考勤系统设计.doc[通俗易懂]设计题目:学生考勤系统设计设计方案:该系统能考察学生的出勤情况,所以包括每个班学生的全部信息。每个学生是一条记录,包括姓名﹑性别﹑学号,对应于某天某门课程的出勤情况等。该系统可模拟考勤过程,记录考勤结果,并能在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。其中,学生可在本系统在线请假以及查看学期内的上课出勤信息。在线请假中,学生可以随时查看到请假的详细进展情况。同时,学生可以查看本期…

  • MySQL联合索引or_MySQL联合索引命中条件

    MySQL联合索引or_MySQL联合索引命中条件转于:https://blog.csdn.net/claram/article/details/77574600首先明确:为什么要用联合索引?对于查询语句“SELECTE.*FROMEWHEREE.e1=1ANDE.e3=2”涉及到两列,这个时候我们一般采用一个联合索引(e1,e3);而不用两个单列索引,这是因为一条查询语句往往应为mysql优化器的关系只用一个索引,就算你有两个索…

  • 无法解析的外部符号解决方法汇总[通俗易懂]

    无法解析的外部符号解决方法汇总[通俗易懂]本文介绍了如何在工程中使用.lib库,以及出现无法解析的外部符号的原因和解决方法。

  • lombok插件安装 idea 搜不到_浏览器flash插件安装

    lombok插件安装 idea 搜不到_浏览器flash插件安装Lombok官网ProjectLombok是一个java库,可以自动插入编辑器并构建工具,为您的java增添色彩。永远不要再写另一个getter或equals方法,使用一个注释,您的类具有一个功能齐全的构建器,自动化您的日志记录变量等等.需要下载的插件lombok.jar包(可去我那里下载lombok.jar)lombok插件sts或eclipse安装方法(下面为sts安装…

  • pycharm如何配置_没有有效的ip配置怎么办

    pycharm如何配置_没有有效的ip配置怎么办PyCharm配置示例1、全局设置:这里是全局设置,也可在每个项目里面单独设置点击右下角的Configure选择Preferences1、设置背景颜色与显示内存大小:2、设置不默认打开上次的工程3、设置显示方法右边分割线:4、设置自动引包:5、设置显示方法缩进线6、设置字体与字体大小:7、设置文件编码格式:请注意,这一步很重要,不要坑队友!8、测试本机是…

  • 研华acdp手机版_研华acdp值得购买吗

    研华acdp手机版_研华acdp值得购买吗你准备游览一个公园,该公园由 N 个岛屿组成,当地管理部门从每个岛屿出发向另外一个岛屿建了一座桥,不过桥是可以双向行走的。同时,每对岛屿之间都有一艘专用的往来两岛之间的渡船。相对于乘船而言,你更喜欢步行。你希望所经过的桥的总长度尽可能的长,但受到以下的限制:可以自行挑选一个岛开始游览。任何一个岛都不能游览一次以上。无论任何时间你都可以由你现在所在的岛 S 去另一个你从未到过的岛 D。由 S 到 D 可以有以下方法:(1)步行:仅当两个岛之间有一座桥时才有可能。对于这种情况,桥的长度会累加到你步

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号