分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

web_custom_request 自定义请求浅析

发布时间:2023-09-06 01:24责任编辑:沈小雨关键词:暂无标签

 

LoadRunner提供的web_custom_request函数可以用于实现参数的动态生成。在LoadRunner中,web_reg_save_param和custom_request都常于处理参数的动态生成。

web_reg_save_param函数是大家都已经熟悉的了,它的主要作用是从一个response中获得后续的request需要使用的数据,然后将其作为一个参数保存下来,供后续步骤使用。该方法在LoadRunner中被称为Correlation(关联)。

而web_custom_request函数则可以用于完全自定义向服务端发送的request。

接下来我们用一个实际的例子说明一下web_custom_request的具体应用:

以Mercury自带的MercuryWebTours例子为例,假设我们希望在登录进入后将用户的前两条记录删除,我们来看看用web_custom_request如何实现这个目标。

首先,我们尝试用HTML方式对该操作进行录制。录制后的脚本中与删除相关的部分大致如下:

web_url("welcome.pl", ???"URL=http://localhost/MercuryWebTours/welcome.pl?page=itinerary", ????"Resource=0", ????"RecContentType=text/html", ????"Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=home", ????"Snapshot=t3.inf", ????"Mode=HTML", ????EXTRARES, ????"URL=images/in_itinerary.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM, ????"URL=images/home.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM, ????LAST);lr_think_time(2);web_submit_form("itinerary.pl", ???"Snapshot=t4.inf", ???ITEMDATA, ???"Name=1", "Value=on", ENDITEM, ???"Name=2", "Value=on", ENDITEM, ???????"Name=removeFlights.x", "Value=116", ENDITEM, ???"Name=removeFlights.y", "Value=8", ENDITEM, ???LAST);

通过树形模式查看一下在submit form的时候实际向服务器发出的请求的内容:

从请求内容中可以看到,我们通过POST方法发出了请求,请求发送的目的URL是/MercuryWebTours/itinerary.pl,发送的内容是:
"1=on&flightID=384-798-JM&2=on&flightID=3026-1592-JM&3=on&flightID=1194-2326-JM&.cgifields=1&.c"
"gifields=2&.cgifields=3&removeFlights.x=116&removeFlights.y=8"

从发送的内容中可以很明显的分析得出,1=on表示第一个checkbox是被选中的,flightID=384-798-JM表示的是第一条记录所对应的flightID。因此,如果我们需要自己组成这个发送的request的话,必须首先通过关联的方式获得前两条记录的flightID,然后再组成request的内容。

web_custom_request方法的原型是:
int web_custom_request (const char *RequestName, <List of Attributes>,[EXTRARES, <List of Resource Attributes>,] LAST );

其中List of Attributes的主要项目是Method,URL和BODY等。对这个例子来说,我们可以很容易构造出我们需要的request的BODY内容。
……
 strcpy(creq, "Body=1=on&flightID=");
 strcat(creq, lr_eval_string("{fID1}"));
 strcat(creq, "&2=on&flightID=");
 strcat(creq, lr_eval_string("{fID2}"));
 strcat(creq, "&.cgifields=1&.cgifields=2");
 strcat(creq, "&removeFlights.x=116&removeFlights.y=8");
……

其中{fID1}、{fID2}等都是通过关联获得的flightID的数据。

因此,我们可以根据图中的数据编写custom_request语句:

web_custom_request("itinerary.pl", ???"Method=POST", ????"URL=http://localhost/MercuryWebTours/itinerary.pl", ???"RecContentType=text/xml", ???creq, ???"Snapshot=t4.inf", ???LAST);

较为完整的代码如下:

Action(){ ???char creq[500]; ???web_reg_save_param("fID1", "LB=INPUT TYPE=\"hidden\" NAME=\"flightID\" VALUE=\"", "RB=\"", "ORD=1", ????????"SEARCH=BODY", LAST); ???web_reg_save_param("fID2", "LB=INPUT TYPE=\"hidden\" NAME=\"flightID\" VALUE=\"", "RB=\"", "ORD=2", ????????"SEARCH=BODY", LAST); ???web_url("welcome.pl", ???????"URL=http://localhost/MercuryWebTours/welcome.pl?page=itinerary", ???????"Resource=0", ???????"RecContentType=text/html", ???????"Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=home", ???????"Snapshot=t3.inf", ???????"Mode=HTML", ???????EXTRARES, ???????"URL=images/in_itinerary.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM, ???????"URL=images/home.gif", "Referer=http://localhost/MercuryWebTours/nav.pl?page=menu&in=itinerary", ENDITEM, ???????LAST); ???lr_think_time(2); ???strcpy(creq, "Body=1=on&flightID="); ???strcat(creq, lr_eval_string("{fID1}")); ???strcat(creq, "&2=on&flightID="); ???strcat(creq, lr_eval_string("{fID2}")); ???strcat(creq, "&.cgifields=1&.cgifields=2"); ???strcat(creq, "&removeFlights.x=116&removeFlights.y=8"); ???lr_output_message(creq); ???web_custom_request("itinerary.pl","Method=POST", ????????"URL=http://localhost/MercuryWebTours/itinerary.pl", ???????"RecContentType=text/xml", ???????creq, ???????"Snapshot=t4.inf", ???????LAST); ???return 0;}

web_custom_request 自定义请求浅析

原文地址:http://www.cnblogs.com/what-/p/7821351.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved