RealThinClient SDK Pro教程:如何使用参数查询的服务器(第3课)

翻译|使用教程|编辑:况鱼杰|2019-07-04 10:58:49.397|阅读 111 次

概述:本教程将展示在知道如何创建Web服务器以及如何发送动态生成的内容后,如何接受查询参数。

# 您正在找协同办公软件吗?点击这里站长给您推荐 #

相关链接:

    RealThinClient SDK是用于开发标准的HTTP(S)服务器,ISAPI扩展以及客户端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。关于RealThinClient SDK的教程会持续更新,本节是RealThinClient SDK的第三课,如何使用参数查询的服务器。

点击下载最新版RealThinClient SDK


    本教程将展示在知道如何创建Web服务器以及如何发送动态生成的内容后,如何接受查询参数。我们将对我们之前的代码(演示发送动态生成内容的代码)进行一些小的更改,以接受请求的查询参数。    

    在之前编写动态生成的内容时,是没有选择让用户决定系统将返回哪个Square值的,所以接下来需要选择Square值的起始编号和结束数字。 

   接下来看一下具体的操作步骤:

  1. 打开我们的第2课项目

     

    02DEMO2bOpenProject-300x142.png

  2. 编辑RtcDataProvider组件的OnDataReceived事件 

    02DEMO2bOpenProject-300x142.png

        浏览器的Square请求地址栏中的URL是:http:// localhost / square,现在需要传递两个参数,即起始和结束数字,以返回Squared值。修改网址如下:http://localhost/square?start=10&end=20

         再发送两个查询参数start和end。这里必须采取一些措施来防止内容增长并导致拒绝服务或出现更糟糕的情况。(注意:可以通过检查请求的平方数是否超过1,000来防止这种情况发生)。 若没有start或end查询参数,就要为每个查询参数设置一个默认值,这样服务器运行时就不会出现错误。但是,还是需要向用户通知此类问题。

    使用with

    procedure TForm1.rdpSquareDataReceived(Sender: TRtcConnection);
      var
        viLine : integer;
        viStart, viEnd : integer;
        vbStartError, vbEndError, vbRangeError : boolean;
    begin
      with TRtcDataServer(Sender) do
      begin
        if Request.Complete then
        begin
          viStart := 1;
          viEnd := 100;
          vbStartError := True;
          vbEndError   := True;
          vbRangeError := True;
     
          if Request.Query['start'] <> '' then
            try
              viStart := StrToInt(Request.Query['start']);
              vbStartError := False;
            except
            end;
     
          if Request.Query['end'] <> '' then
            try
              viEnd := StrToInt(Request.Query['end']);
              vbEndError := False;
            except
            end;
     
          if viEnd - viStart > 1000 then
            viEnd := viStart + 100
          else
            vbRangeError := False;
     
          Write('');
          Write('Square Values');
     
          if vbStartError = True then
            Write('ERROR: Wrong start parameter. Set to Default (1)');
     
          if vbEndError = True then
            Write('ERROR: Wrong end parameter. Set to Default (100)');
     
          if vbRangeError = True then
            Write('ERROR: Wrong Range. Set to Default (100)');
     
          Write('NumberSquare');
     
          for viLine := viStart to viEnd do
          begin
            Write('' + IntToStr(viLine) + '');
            Write('' + IntToStr(viLine * viLine) + '');
          end;
     
          Write('');
        end;
      end;
    end;

    不使用with

    procedure TForm1.rdpSquareDataReceived(Sender: TRtcConnection);
      var
        viLine : integer;
        rdsServer : TRtcDataServer absolute Sender;
        viStart, viEnd : integer;
        vbStartError, vbEndError, vbRangeError : boolean;
    begin
      if rdsServer.Request.Complete then
      begin
        viStart := 1;
        viEnd := 100;
        vbStartError := True;
        vbEndError   := True;
        vbRangeError := True;
     
        if rdsServer.Request.Query['start'] <> '' then
          try
            viStart := StrToInt(rdsServer.Request.Query['start']);
            vbStartError := False;
          except
          end;
     
        if rdsServer.Request.Query['end'] <> '' then
          try
            viEnd := StrToInt(rdsServer.Request.Query['end']);
            vbEndError := False;
          except
          end;
     
        if viEnd - viStart > 1000 then
          viEnd := viStart + 100
        else
          vbRangeError := False;
     
        rdsServer.Write('');
        rdsServer.Write('Square Values');
     
        if vbStartError = True then
          rdsServer.Write('ERROR: Wrong start parameter. Set to Default (1)');
     
        if vbEndError = True then
          rdsServer.Write('ERROR: Wrong end parameter. Set to Default (100)');
     
        if vbRangeError = True then
          rdsServer.Write('ERROR: Wrong Range. Set to Default (100)');
     
        rdsServer.Write('NumberSquare');
     
        for viLine := viStart to viEnd do
        begin
          rdsServer.Write('' + IntToStr(viLine) + '');
          rdsServer.Write('' + IntToStr(viLine * viLine) + '');
        end;
     
        rdsServer.Write('');
      end;
    end;
  3.     检查两个查询参数(start和end),如果没有此参数的数据,将会使用默认值(1表示start,100表示end)。然后检查范围(end减去start)是否大于1,000,如果是,则将其设置为100。如果任这类何检查失败,我们都会向用户发送错误消息。        

  4. 检查服务器是否正在运行并发送正确响应。

    接下来运行应用程序:

    04DEMO2bServerRunning-300x142.png

    在浏览器中输入以下任一地址:          

    http://localhost/square?start=10&end=200

    http://localhost/square

    http://localhost/square?start=-15

    http://localhost/square?start=helloworld

    浏览器显示画面如下:

    05DEMO2bServerResponseExample-300x269.png

    本教程中附带的资源:          

    RealThinClient SDK - DEMO第3课 - 使用查询参数PDF        

    RealThinClient SDK第3课的代码



    慧都.jpg   

    在慧都科技,能够为您的企业找到解决方案,还有企业IT相关培训,以及计算机软件/硬件的销售,想要了解更多有关慧都的资讯,请点击在线客服>>,或者关注慧都微信公众号 ☟☟☟

dd2629f30d553d56ccaf7164fdcb784e-sz_28327.webp.jpg

   

 



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:RealThinClient https://rtc.teppi.net/realthinclient-sdk-lesson-2b-using-query-parameters/

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
RealThinClient SDK Pro

用于开发标准的HTTP(S)服务器、ISAPI扩展及客户端的VCL控件

在线
客服
在线
QQ
咨询
电话
173-8239-2642
购物车 反馈 返回
顶部
在线客服系统
live chat