关联(correlation):脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。也是把脚本中某些写死的数据,转变成动态的数据。
什么内容需要关联:当脚本中的数据每次回放都发生变化时,并且这个动态数据在后面的请求中需要发送给服务器,那么这个内容需要通过关联来询问服务器,获得该数据的变化结果。例如:
1.登录字符串。带有会话ID或时间戳等动态数据的登录字符串。
2.日期/时间戳。使用日期或时间戳或者其他用户凭据的任意字符串。
3.常见前缀。后跟字符串的常见前缀,如SessionID或CustomerID
Ø 【语法】:
int web_reg_save_param(const char
*ParamName, <list of Attributes>, LAST);
Ø 【参数说明】:
ParamName:存放得到的动态内容的参数名称
Ø list of Attributes:其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert,
SaveLen。属性值不分大小写
Ø Notfound:当在返回信息中找不到要找的内容时应该怎么处理
Ø Notfound=error:当在返回信息中找不到要找的内容时,发出一个错误讯息。这是缺省值。
Ø Notfound=warning:当在返回信息中找不到要找的内容时,只发出警告,脚本也会继续执行下去不会中断。
Ø LB( Left Boundary ) :返回信息的左边界字串。该属性必须有,并且区分大小写。
Ø RB( Right Boundary ):返回信息的右边界字串。该属性必须有,并且区分大小写。
Ø RelFrameID:相对于URL而言,欲查找的网页的Frame。此属性质可以是All或是数字,该属性可有可无。
Ø Search :返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。
Ø ORD :说明第几次出现的左边界子串的匹配项才是需要的内容。该属性可有可无,缺省值是1。如为All,则将所有找到的内容储存起来。
Ø SaveOffset :当找到匹配项后,从第几个字元开始存储到参数中。该属性不能为负数,缺省值为0。
Ø SaveLen:当找到匹配项后,偏移量之后的几个字元存储到参数中。缺省值是-1,表示一直到结尾的整个字串都存入参数。
【实例一】
char outFlightParam[50]; //关联参数的名称
char outFlightParamVal[50]; //关联参数outFlightParam的格式化值
/*由于ORD属性设置为“ALL”,因此它将符合左右边界的所有值保存在数组参数。
由于默认航班值为"230;378;11/20/2003
checked >",而我们不需要" checked ",因此将SaveLen属性
设置为“18”,来限制关联值的长度为18个字符
*/
web_reg_save_param("outFlightVal",
"LB=outboundFlight value=", "RB=>",
"ORD=ALL",
"SaveLen=18",
LAST );
web_submit_form("reservations.pl",
"Snapshot=t4.inf",
ITEMDATA,
"Name=depart", "Value=London", ENDITEM,
"Name=departDate", "Value=11/20/2003", ENDITEM,
"Name=arrive", "Value=New York", ENDITEM,
"Name=returnDate", "Value=11/21/2003", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=roundtrip", "Value=<OFF>", ENDITEM,
"Name=seatPref", "Value=None", ENDITEM,
"Name=seatType", "Value=Coach", ENDITEM,
"Name=findFlights.x", "Value=83", ENDITEM,
"Name=findFlights.y", "Value=16", ENDITEM,
LAST );
/*
The result of the web_reg_save_param having
been called before the web_submit_form. is:
Notify: Saving Parameter
"outFlightVal_1 = 230;378;11/20/2003"
Notify: Saving Parameter
"outFlightVal_2 = 231;337;11/20/2003"
Notify: Saving Parameter
"outFlightVal_3 = 232;357;11/20/2003"
Notify: Saving Parameter
"outFlightVal_4 = 233;309;11/20/2003"
Notify: Saving Parameter
"outFlightVal_count = 4"
*/