您現在的位置:首頁 >> 其它平臺 >> Andriod >> 內容

Xe5開發web服務端和手機客戶端

時間:2013/9/18 17:09:45 點擊:

  核心提示:我們開發一個三層的android程序建立一個webservices stand-alone vcl application 作為手機訪問的服務端1、new-other-webservices2、選擇s...

我們開發一個三層的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

運行如下:

以上文章:xe5 android的服務端和手機客戶端的源代碼下載地址

http://files.cnblogs.com/nywh2008/AndroidTest.rar

作者:至今 來源:網絡
共有評論 23相關評論
發表我的評論
  • 大名:
  • 內容:
  • 盒子文章(www.srtxuk.icu) © 2019 版權所有 All Rights Reserved.
  • 滬ICP備05001939號
  • 快乐10分助手官网