loadrunner获取登陆响应头信息,并截取想要的信息作为参数

本文展示了一段C语言代码,用于从源字符串中提取指定边界内的参数,并将其转换为UTF-8编码。通过示例演示了如何使用web_reg_save_param_custom函数自定义参数提取,以及如何利用lr_convert_string_encoding进行编码转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我直接贴代码吧。感觉这些东西都比较简单,就是C的语法不懂,不过都是网上找的。

void web_reg_save_param_custom(char *sourceStr, char* outpuStr, char *leftBdry, char *rightBdry){     
 
    char *st1, *st2;
 
    int result, i = 0;
 
    i=strlen(leftBdry);
 
    st1 = (char*) strstr(sourceStr, leftBdry); 
 
    if (st1 != NULL){ 
 
        st1 += i;
 
        st2 = (char*) strstr(st1, rightBdry);
 
        if (st2 != NULL){
 
            result = st2 - st1;
 
            *(st1 + result) = '\0';
 
            }     
        }  
 
    if ((st1 == NULL) || (st2 == NULL))
 
        lr_error_message("Error: No substring found for the specified boundary");
 
    else  
 
        lr_save_string(lr_eval_string(st1), outpuStr); 
}
 
test()
{
 
	lr_think_time(1);
	web_set_max_html_param_len("262144"); // 默认最大长度为256
	web_reg_save_param("ResponseBody", "LB=", "RB=", "Search=Body", LAST);
	web_save_header(REQUEST, "RequestHeader");// REQUEST为内置变量,保存请求的头信息,需在发送URL请求前注册使用,将请求头信息存入字符串RequestHeader中
	web_save_header(RESPONSE, "ResponseHeader");// 将RESPONSE保存响应的头信息在字符串ResponseHeader中



	web_submit_data("login.jsp", 
		"Action=https://t-passport3.pcbaby.com.cn/passport3/passport/login.jsp", 
		"Method=POST", 
		"RecContentType=text/html", 
		"Referer=http://t-passport3.pcbaby.com.cn/passport3/", 
		"Snapshot=t190.inf", 
		"Mode=HTTP", 
		ITEMDATA, 
		"Name=username", "Value=fish", ENDITEM, 
		"Name=password", "Value=123456test", ENDITEM,
		LAST);


   //字符转码
	lr_convert_string_encoding(lr_eval_string("{RequestHeader}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"RequestHeaderUTF8");
	lr_convert_string_encoding(lr_eval_string("{ResponseHeader}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"ResponseHeaderUTF8");
	lr_convert_string_encoding(lr_eval_string("{ResponseBody}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"ResponseBodyUTF8");




	lr_save_string(lr_eval_string("{ResponseHeader}"),"test");

	lr_output_message("# 请求头信息:\n %s",lr_eval_string("{test}"));

	web_reg_save_param_custom(lr_eval_string("{test}"), "Outputtest", "common_session_id1=","; domain=");

	lr_output_message("切割后的值=%s",lr_eval_string("{Outputtest}"));


	/*
    lr_save_string("xyzToken3234344endKey,","test"); 
 
      
 
     */

 
    return 0;
}

 

### LoadRunner提取响应数据的方法 在 LoadRunner 的性能测试过程中,有时需要从服务器返回的响应中提取特定的信息将其用于后续请求。这可以通过 **web_reg_save_param** 函数实现。该函数的作用是在 HTTP 响应中查找指定的内容,将其保存为一个参数供后续脚本使用。 以下是具体的说明和示例: #### 使用 `web_reg_save_param` 提取响应数据 `web_reg_save_param` 是一种预定义规则,它会在下一个请求的响应中捕获所需的数据将之存储在一个变量中。其基本语法如下: ```c web_reg_save_param( "ParamName=<parameter_name>", // 定义要保存的参数名称 "LB=<left_boundary>", // 左边界字符串 "RB=<right_boundary>", // 右边界字符串 "Search=Body", // 搜索范围,默认为 Body LAST); ``` - `"ParamName"` 表示提取后的数据将被保存到哪个参数名下。 - `"LB"` 和 `"RB"` 分别表示左边界和右边界,即目标数据前后固定的标志字符或字符串[^1]。 - `"Search=Body"` 表明将在响应主体中搜索匹配项。 #### 示例代码 假设有一个登录页面,在成功登录后,服务器返回了一个用户的唯一 ID (`userId`),形式类似于 `<userId>12345</userId>`。我们需要提取这个 `userId` 在后续请求中使用。 ```c // 注册正则表达式来捕获 userId web_reg_save_param( "ParamName=UserId", "LB=<userId>", "RB=</userId>", "Search=Body", LAST); // 执行登录操作 (此步会触发上一步注册的规则) web_submit_data("loginAction.csp", "Action=http://example.com/loginAction.csp", "Method=POST", "EncType=application/x-www-form-urlencoded", "RecContentType=text/html", "Referer=http://example.com/", "Snapshot=t1.inf", "Mode=HTML", ITEMDATA, "Name=username", "Value=myUsername", ENDITEM, "Name=password", "Value=myPassword", ENDITEM, LAST); // 输出提取的 UserId 参数以验证是否正确获取 lr_output_message("Extracted User Id is: %s", lr_eval_string("{UserId}")); ``` 上述代码片段展示了如何通过 `web_reg_save_param` 来提取响应中的 `userId` 数据,利用 `{UserId}` 参数化的方式调用所提取的结果[^2]。 #### 处理 AJAX 请求的情况 如果涉及 AJAX 动态加载内容,则可能无法直接通过标准方式捕获所需的响应数据。此时可以尝试以下方法之一: 1. 修改录制选项以捕捉更多细节; 2. 利用关联技术手动分析动态交互逻辑编写相应脚本。 对于 JavaScript 或其他前端框架引发的问题,LoadRunner 支持有限,因此建议尽可能依赖服务端接口而非完全基于浏览器行为建模。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值