zoukankan      html  css  js  c++  java
  • DELPHI XE5开发WEB服务器及安卓手机客户端

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

    -------------------------------------

    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

     

     

  • 相关阅读:
    Spring&AOP&JDK和Cglib动态代理&AspectJ进行AOP开发(XML方式)
    python 切换工作目录
    python 布隆过滤器
    python sys.path.append()
    python encrypt 实现AES加密
    python 魔术方法
    python re匹配中文和非中文
    python 文件整理 shutil
    python定时任务框架
    mac 系统修改环境变量
  • 原文地址:https://www.cnblogs.com/m0488/p/3672738.html
Copyright © 2011-2022 走看看