呼叫kbmMW服務端方法經驗一則
阿新 • • 發佈:2020-08-29
基於kbmMW實作專案,難免要在服務端實現方法供客戶端呼叫,在這裡有條重要的經驗分享。
假設服務端有個方法,並反回一個字串。
Procedure TQueryService.ValidUser:string begin ... result:='OK'; end;
上面服務端方法返回串OK,表示使用者合法。
那客戶端我們這樣呼叫:
procedure TUser.ValidateUser(LoginCode, password: string); var r: string; begin ... r := c.Request(...); if (r = 'OK') then begin //使用者合法 end else ... end;
正常情況下沒有問題,應用會按預期執行。而一但因網路或其他問題,造成客戶端請求不能正常執行,問題就來了:
c.Request返回的是個Variant,當不能正常執行時,會返回Variant型別的NULL,將之轉換為一個string,會產生異常。
procedure TUser.ValidateUser(LoginCode, password: string); var r: variant; begin ... r := c.Request(...);if ((not VarIsNull(r)) and (r = 'OK')) then begin //使用者合法 end else ... end;