我有一个LR脚本,我用来在REST API上调用来下载文件。该文件已成功下载,但我还需要下载文件大小的值以进行验证。这是我在loadrunner控制台中看到的。
Action.c(50): web_custom_request("GetImage") was successful, 2373709 body bytes, 528 header bytes, 99 chunking overhead bytes.
我怎样才能得到值2373709?我尝试使用下面的代码,但它返回的大小与上面提到的有点不同,并没有解决目的。
HttpDownLoadSize=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_output_message("File Size %i", HttpDownLoadSize);
任何帮助将不胜感激。在此先感谢您的帮助。
答案 0 :(得分:2)
HTTP_INFO_DOWNLOAD_SIZE
属性存储最后一个HTTP响应总下载大小。这包括所有响应的标题和正文的总大小,以及可能的通信开销。 2373709 body bytes
是特定步骤中获得的所有回复的总体大小,因此,如果您的自定义请求步骤中有多个请求/响应,则此数字将大于实际文件大小。
我建议验证您的回复体型。虽然没有标准API可以检索它(至少在LR 12.53中是最新的可用版本)。据我所知,你的反应是分块的,所以我不建议你采取任何有效的方法来做到这一点。这是一个相当低效的方法,基于将整个身体存储到临时缓冲区(两次!):
unsigned long length = 0;
char* tmp = 0;
web_reg_save_param_ex(
"ParamName=Body",
"LB=",
"RB=",
SEARCH_FILTERS,
"Scope=Body",
"RelFrameID=1",
LAST);
web_custom_request(...);
lr_eval_string_ext("{Body}", strlen("{Body}"), &tmp, &length, 0, 0, -1);
lr_output("body length is %d", length);
lr_eval_string_ext_free(&tmp);
此外,您可能需要使用web_set_max_html_param_len()增加最大HTML参数长度。
但是,如果您有一个包含Content-Length
标头的非分组非压缩响应,则可以更有效地验证它:
web_reg_find("Text=Content-Length: 2373709",
"Search=Headers",
"RelFrameID=1",
LAST);
web_custom_request(...);