首页 > 其他分享 >delphi RTC 解析statucode 问题

delphi RTC 解析statucode 问题

时间:2023-05-23 10:11:46浏览次数:40  
标签:begin end statucode RTC delphi HeadStr StatusCode StatusLine MyPos

开源的版本也一样会。

rtcinfo.pas ,以下的解析 StatusCode  有问题,如果服务器返回的是 “HTTP/1.1 200” 后面没有状态文本。会解析不到 状态码,这里应该按标准格式来,协议 空格 状态码 空格 状态文本

一个一个解析才对,但是RTC 认为状态码、文本是要一起有的。
例子:同一个请求用RTC的话,状态码是0 而用POSMAN 是200

procedure TRtcResponse.SetHeaderText(const pValue: AnsiString);
  var
    MyPos:integer;
    StatusLine,
    HeadStr,
    left:AnsiString;
  begin
  if pValue='' then Exit;

  HeadStr:=pValue+CRLF;

  if length(HeadStr)>6 then
    begin
    if ((HeadStr[5]='/') and (Upper_Case(Copy(HeadStr,1,4))='HTTP')) or
       ((HeadStr[6]='/') and (Upper_Case(Copy(HeadStr,1,5))='HTTPS')) then
      begin
      MyPos:=Pos(CRLF,HeadStr);
      StatusLine:=Copy(HeadStr,1,MyPos-1);
      Delete(HeadStr,1,MyPos+Length(CRLF)-1);

      { Our line probably looks like this:
        HTTP/1.1 200 OK }
      MyPos:=PosEx(' ',StatusLine); // first space before StatusCode
      if MyPos>0 then
        begin
        StatusCode:=0;
        StatusText:='';

        Delete(StatusLine,1,MyPos);

        MyPos:=PosEx(' ',StatusLine); // space after StatusCode
        if MyPos>0 then
          begin
          left:=Copy(StatusLine,1,MyPos-1); // StatusCode
          Delete(StatusLine,1,MyPos); // StatusText

          if (left<>'') and (StatusLine<>'') then
            begin
            try
              StatusCode:=Str2Int64(left);
              StatusText:=StatusLine;
            except
              // if there is something wrong with this, just ignore the exception
              end;
            end;
          end;
        end;
      end;
    end;

  inherited SetHeaderText(HeadStr);
  end;

 

标签:begin,end,statucode,RTC,delphi,HeadStr,StatusCode,StatusLine,MyPos
From: https://www.cnblogs.com/BTag/p/17422497.html

相关文章

  • delphi TcxGridPopupMenu控件学习笔记
    TcxGridPopupMenu控件用来给cxgrid设置右键菜单的.它长这样属性面板长这样: 默认的系统菜单长这样: 这菜单上面有好几个选项我不想要,怎么办?隐藏它呗!private{Privatedeclarations}procedureStdHeaderMenuPopup(Sender:TObject);//-----------------......
  • DateTimePicker如何与Delphi自带Style同步
    原文出处:DateTimePicker如何与Delphi自带Style同步-封三郎-博客园(cnblogs.com)Delphi的DateTimePicker组件有一个CalColors属性,可以设置DropDown打开的日历节目的风格。但如果不使用Delphi自带的Style,在这里设置属性看不到期望的效果。而使用了delphi自带的st......
  • delphi cxGrid做一个空白的出/入库单
    效果图: 实现的原理:1.在数据库建一个表,然后绑定到cxgrid上面.数据表各字段的数据类型,按你的业务需求来设置,同时要允许空值,因为我们必须让它们保持空值,这样在绑定到cxgrid时,才会是空白的,然后再弄个自增的主键ID.下面这张图是我研究时截的图,不想改了,凑合着用吧2.绑......
  • delphi cxgrid截图
    效果图: 点击GetImage,会在程序目录下生成一个表格截图的图片文件,打开后如下图:以下是代码:procedureTForm4.SpeedButton1Click(Sender:TObject);vargridView:TcxGridDBTableView;focusedItem:TcxCustomGridTableItem;focusedRect:TRect;aBitmap:TBitm......
  • 关于STM32Cube_FW_F1_V1.8.0内的example顶层程序设计逻辑 与 RTC_Calendar增补
     Examples内程序结构STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Examples内程序结构分析如下:使用外设XXX向工程添加 stm32f10x_XXX.c修改stm32f10x_conf.h 在stm32f1xx_hal_msp.c中写 外设XXX写初始化程序在stm32f1xx_it.c中写中断服务程序在main.c中写配置程......
  • DCC32命令行方式编译delphi工程源码
    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/10284879作者:苏生米沿 一、首先找到这个可执行文件,熟悉delphi的人应该很容易就找到,打开你安装delphi的目录,如我的路径C:\ProgramFiles\Delphi_2007\bin\DCC32.EXE二、拷贝一份出来,我将其放在了我的测试目录下......
  • 报表控件FastReport VCL v2023.2 - 将Delphi 产品整合到单一系统
    FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开发中的报表信息输出为TXT、PDF等多种文件格式,是编程开发人员必备的报表工具。FastReportVC......
  • Delphi GUI程序与FireMonkey教程
    首先,必须向原作者及译者表示最深的感谢,下面是下载地址:https://bbs.2ccc.com/attachments/2023/changfenglee_2023517104121.rar通过这本书,做为Delphi新老开发者,都能利用Delphi开发出跨平台的应用,笔者强列推荐! ......
  • delphi实现modbus通信
    -------------------------------------------------------------基础单元----start-----------------------------------------------------------------------------{********************************************************************}{*单元名称:UntM......
  • OneDelphi界面美化
    使用OneDelphi已经有一段时间了,中间件的功能很强大,主要特点:●oneDelphi由OneServer中间件,OneClient控件包组成,自由免费,全源码...●oneDelphi是一个MVC+传统DATASET双架构中间件...●oneFastClient是一个快速开发传统EXE的开发包。OneDelphi的官方QQ群:814696487主界面:优化UI......