LR中判断HTTP返回状态

本文介绍了一种在B/S测试中保存并检查HTTP响应头信息的方法,通过使用LoadRunner提供的API来捕获HTTP状态码,并将其与标准状态码200进行对比。
 
有天,有个人问:我在做b/s测试,请问如何保存从服务器传回来的http头的信息,怎么能得到http状态,和状态200进行比较?
后来,我给出的代码如下:
Action()
{int i;
       // [WCSPARAM WCSParam_Text1 3 200] Parameter {WCSParam_Text1} created by Correlation Studio
       web_reg_save_param("WCSParam_Text1",
              "LB=1.1 ",
              "RB= ",
              "Ord=1",
              "RelFrameId=1",
              "Search=Headers",
              "IgnoreRedirections=Yes",
              LAST);
       web_url("www.hao123.com",
              "URL=http://www.hao123.com/",
              "Resource=0",
              "RecContentType=text/html",
              "Referer=",
              "Snapshot=t1.inf",
              "Mode=HTML",
              LAST);
 i=atoi(lr_eval_string("{WCSParam_Text1}"));
if (i == 200)
       lr_log_message("终于成功了!!我不容易呀!!!");
       else
       lr_log_message("唉,又失败了,不过这才是正常的! ");
       return 0;
}
后来查了帮助,看到如下方法才好:
Action()
{
int HttpRetCode;
       web_url("www.hao123.com",
              "URL=http://www.hao123.com/",
              "Resource=0",
              "RecContentType=text/html",
              "Referer=",
              "Snapshot=t1.inf",
              "Mode=HTML",
              LAST);
 
    HttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);
 
if (HttpRetCode == 200)
       lr_log_message("终于成功了!!我不容易呀!!!");
       else
       lr_log_message("唉,又失败了,不过这才是正常的! ");
       return 0;
}
 
关于函数,偶不说了,查看帮助,清楚着哩。
 
在STM32中,PC、SP、LR寄存器是重要的内核寄存器,各自有着独特的功能、作用及使用方法。 ### 程序计数器(PC,R15) PC记录的是下一个将要执行的指令的地址。当程序正常执行时,PC会自动指向下一条指令,从而保证程序按顺序执行。当程序需要调用子程序时,计算机会把PC中的地址传给LR寄存器,用于保存调用点地址,然后程序跳转到子程序地址中执行。执行完子程序后,计算机会读出LR寄存器中的地址传给PC,使程序返回到调用点继续往下执行[^2]。 ### 堆栈指针(SP,R13) SP即堆栈指针,每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈。五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。当ARM进入异常模式时,程序可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序状态的完整性。在多层嵌套调用中,SP始终指向栈的下一个空闲空间的地址。每一层的子程序都会在入口处将LR寄存器的值压入堆栈,并在出口处从堆栈中弹出返回地址到LR寄存器,这样即使LR寄存器被覆盖,程序也能通过堆栈中的值正确返回到上一层程序,实现多层嵌套的恢复[^2][^5]。 ### 链接寄存器(LR,R14) LR主要用于保存子程序调用点的地址。当程序调用子程序时,PC中的地址会被传给LR寄存器。但当有多个子程序嵌套时,每进入一个子程序,上一层的调用点地址会LR寄存器,导致上上一层的调用点地址被覆盖。此时需要将LR寄存器的值入栈保存。另外,在调试方面,如果进入了HardFault中断,LR寄存器的值为0xFFFFFFxx,通过查看SP寄存器的值(SP寄存器是RAM的某个地址,如0x2000xxxx or 0x2400xxxx),在这个RAM地址附近读取RAM值,能找到一个Flash地址,该Flash地址的指令就是跳入HardFault的原因。查看LR的值还能判断进入中断之前使用的堆栈类型,若LR = 0xffff fff1,目前资料未提及对应情况;若LR = 0xffff fff9,说明进入中断之前使用的是MSP堆栈;若LR = 0xffff fffD,说明进入中断之前使用的是PSP堆栈。并且可以通过相应的堆栈指针找到R0、R1、R2、R3、R12、LR返回地址、PSR等寄存器的值[^2][^3][^4]。 ### 代码示例 以下是一个简单的伪代码示例,展示了子程序调用时PC、SP、LR寄存器的使用情况: ```python # 主程序 def main_program(): # 假设此时PC指向主程序下一条指令地址 # 调用子程序 call sub_program # 子程序返回后,继续执行主程序 print("Back to main program") # 子程序 def sub_program(): # 进入子程序时,LR保存调用点地址 # SP指向栈顶空闲空间,将LR值入栈 push LR # 执行子程序代码 print("Inside sub program") # 子程序执行完毕,从栈中弹出LR值 pop LR # 返回调用点 return ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值