上次講過 DataSnap Server,接下來就是透過 http 的方式跟 DataSnap Server 搭上線,DataSnap Server 提供兩個 sample method,分別是 

    function EchoString(Value: string): string; 與
    function ReverseString(Value: string): string;

  透過之前提過 Phil Hess 發表過 ns_url_request.pas,來測試看看是否可以呼叫 DataSnap 這兩個 smaple mehod

  DataSnap Server 上次已經建立好了,接下來新增一個 FireMonkey HD iOS 的 Application,然後在 Form 各擺兩個 button & Edit,命名如下圖所示

  iOSHttpClient  

  另外為了由於 ns_url_request.pas 中,使用的 {$modeswitch ObjectiveC1} 指令,只能在 Mac FPC 的環境中才能編譯,因此需要經過 Export to XCode -> 同步到 Mac -> 開啟 XCode 編譯才能利用 iOS 模擬器來測試,這樣似乎有些麻煩,有沒有辦法先在 Windows 環境測試呢?當然有,Windows 環境大家最為熟知的就是使用 Indy,透過一些簡單的編譯器指令,就可以達到讓同一支程式使用相同方式支援 Windows 與 Mac 的環境,先以呼叫 Server function "EchoString"  的範例如下

  iOSHttpClient2  

  DataSnap Server 範例中使用的 Port 為 8088,uses 的部分則如下所示,同樣需要使用編譯器指令做一些區隔

  iOSHttpClient3  

  呼叫 Server function "ReverseString"的程式碼,應該就很容易比照辦理,如下

  iOSHttpClient4  

  DataSnap Server & iOS 的程式同時 run 起來,iOS  程式中主機 ip 位置設定正確,Server 端防火牆確定有例外排除的話,程式應該就可以正確執行了,Windows 端程式執行畫面如下

  iOSHttpClient5  

  iOS 的環境這邊就不展示了,結果是類似的。現在可以跟 Server 通上電了,而且是以 json 格式回傳,剩下的就是如何比照辦理,把 client 端查詢條件傳給 server,server 端透過 SQL 語法跟資料庫要符合條件的資料,將資料轉換成 json 格式,回傳給 client ,解析 json 格式,將資料展示在 client 端的畫面上就大功告成了...

 

...to be continued

 

    縹緲 發表在 痞客邦 留言(0) 人氣()