uniGUI試用筆記(十三)調用WebService


 

今天嘗試用uniGUI做Web服務器,調用應用服務器的WebService,遇到些問題記錄下來備忘。

1、對WebService的調用同一般App程序,只是注意如果WebService的執行時間較長,會報超時錯誤,此時需要處理:

(1)在DataModule上放一個THTTPRIO控件;

(2)在數據模板創建時,設置THTTPRIO控件的HTTPWebNode屬性的超時時間,代碼如下:

procedure TUniMainModule.UniGUIMainModuleCreate(Sender: TObject);
begin
  //連接超時時間(ms)
  HTTPRIO1.HTTPWebNode.ConnectTimeout := 30000;
  //接收超時時間(ms)
  HTTPRIO1.HTTPWebNode.ReceiveTimeout := 30000;
  //發送超時時間(ms)
  HTTPRIO1.HTTPWebNode.SendTimeout := 30000;
end;

(3)調用WebService方法時,不使用缺省創建的THTTPRIO,而是數據模板上的控件,代碼如下:

function TUniMainModule.GetString: string;
var
  iw : IWebServiceTest;
begin
  //創建WebService接口
  iw := GetIWebServiceTest(
   False, 
   '', 
   HTTPRIO1);//窗體上的控件
  //調用方法
  Result := iw.SIService('');
end;

2、uniGUI服務器運行時,調用WebService報“MSXML未安裝”的錯誤,開始以為是64位和32位的問題,后來發現不是。正確理解是:Delphi內部WebService調用時使用了MSXML,而MSXML是COM對象,所以需要在程序啟動時調用CoInitialize進行初始化,在uniGUI服務器中只需要設置服務數據模板的AutoCoInitilaize屬性為True即可,代碼如下:

ServerModule.AutoCoInitilaize :=True;

當然最好是在設計期直接更改屬性即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM