• 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;

    当然最好是在设计期直接更改属性即可。

  • 相关阅读:
    真不容易...终于我也有了个js的语法高亮
    持久层相关概念
    测试语法高亮显示
    BSTR简介和内部结构
    Debugging JavaScript in Your Applications
    Google Analytics 跟踪代码迁移手册
    我对事件驱动的理解
    imagettftext 可调整字间距输出
    投票机的实现及相关技术
    js光标定位到文本末尾
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4488902.html
Copyright © 2020-2023  润新知