对于如何保存到本地,loadrunner是无法记录的,执行脚本时客户端发出这个请求,服务器端响应后,loadrunner接收到了服务器响应的文件内容(我们可以在日志中看到文件的内容,不过是乱码),既然loadrunner可以接收到文件内容,那么我们完全可以使用关联函数来获得该内容,在通过C语言的文件函数把获得的内容写在本地。
那现在遇到这样一个问题,使用关联函数如何定义获得服务器响应内容的左右边界呢?因为我们把这个请求写在了一个单独的action中,所以在这里我们只要把服务器响应的所有内容均获取下来写到本地,也就完成了下载文件的保存。
下面看代码:
Action2()
{
long create; //创建文件
int s_file_size,rNum; //文件大小
long
s_file_data; //响应数据内容大小
char file_path[1024],filename[32];//拼凑文件路径
rNum = rand();
itoa(rNum, filename, 10);
strcpy(file_path,
"d:\\down\\"); //文件放置路径
strcat(file_path, filename);
strcat(file_path, ".apk"); //文件保存后缀名
web_set_max_html_param_len("1024000"); //设置页面接受的文件大小
web_reg_save_param("s_share", "LB=", "RB=", "SEARCH=BODY", LAST);
web_url("downfile.jsp",
"URL=http://192.168.1.209:8888/xianfeng/downfile.jsp?filename=KVPioneer32578.apk",
"Resource=1",
"RecContentType=application/x-download",
"Referer=http://192.168.1.209:8888/xianfeng/download.jsp",
LAST);
s_file_size = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
//获取文件大小
create=s_file_data = fopen(file_path, "wb"); //创建文件
if(s_file_size > 0)
{
if(create == NULL)
{
lr_output_message("文件操作失败!");
return -1;
}
fwrite(lr_eval_string("{s_share}"), s_file_size, 1, s_file_data);
//写入文件内容
fclose(s_file_data); //关闭文件
}
return 0;