Delphi XE5通过WebService开发Web服务端和手机客户端

介绍

本文章介绍了Delphi XE5通过WebService开发Web服务端和手机客户端,下面是操作的详细过程。

我们开发一个三层的android程序
建立一个webservices  stand-alone vcl application 作为手机访问的服务端
1、new->other->webservices

2、选择 stand-alone vcl application
3、这里使用 默认端口8080
4、选择创建接口
5、给服务起个名字
6、点ok后保存工程,保存为目录如下:
7、至此为止,什么代码都不写,点击运行,我们看到
8、启动并点击 open browser按钮在浏览器里看到

一个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服务器,在控件上邮件 设置一下信息
      
     3、其他数据控件连接
        FDquery1已经自动连上了connection,我们在sql里写以下语句
         接下来 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服务
     
    服务端至此完成,实现了用clientdataset的xmldata返回数据集的过程,当然您可以对返回的xml进行压缩和解压缩的操作,减小网络传输压力。

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

1、新建firemonkey mobile application
2、选择blank application
   
3、这里选择分辨率,我用的手机是三星的p3100,没别的优点 就是大,7寸的屏,我女儿管这个叫平板手机  O(∩_∩)O~
4、界面布局摆放如下:
5、绑定数据集
   xe5中使用livebingding来绑定数据集,没有datasource熟悉了,理论上所有的控件都可以绑定数据集。
   先在clintdataset中添加字段
       
依次添加 code ,name ,py_code 三个字段,然后选中grid,点击 ,然后将dataset拖拉到grid中:如图
当然,您要选择clientdataset1下的这个*号再拖拽,,这就完成了绑定。。。
然后调整列宽等选项。

界面就这样吧,继续。。。,先启动咱们上几片文章建立的手机服务端
          
    导入webservices单元,file->new->other->webservices->选择 wsdlimporter
      
   输入wsdl地址   http://localhost:8080/wsdl/IAdroidServices
      

之后施展一路回车大法,只到生成一个单元文件保存并在手机窗体单元中引用。
在窗体上的按钮的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平台上先测试一下,如图:
win32平台上没问题 ok,接下来target选择我的 大平板手机 O(∩_∩)O~ ,p3100
运行如下:

转载请保留当前帖子的链接: http://www.dfwlt.com/forum.php?mod=viewthread&tid=922  谢谢! 

搜索简单,分享不易,且分享且珍惜,您难道不想分享下您的心得?如果觉得本文章好的话,您可以在我们网站上注册,然后发布您的好的心得,让大家共同进步,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值