如何从 LoadRunner 中的 web_custom_request 响应中获取值
How can I fetch a value from response of web_custom_request in LoadRunner
我有一个 LR 脚本,我正在使用它来调用 REST API 来下载文件。文件已成功下载,但我还需要下载文件大小的值以进行验证。这是我在 loadrunner 控制台中看到的内容。
Action.c(50): web_custom_request("GetImage") was successful, 2373709 body bytes, 528 header bytes, 99 chunking overhead bytes.
如何获取值 2373709??我尝试使用下面的代码,但它的大小 returns 与上面提到的有点不同,并没有解决问题。
HttpDownLoadSize=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_output_message("File Size %i", HttpDownLoadSize);
如有任何帮助,我们将不胜感激。在此先感谢您的帮助。
HTTP_INFO_DOWNLOAD_SIZE
属性 存储最后一个 HTTP 响应的总下载大小。这包括 header 的总大小和所有响应的主体,以及可能的通信开销。 2373709 body bytes
是在特定步骤中获得的所有响应的总 body 大小,因此如果您的自定义请求步骤中有多个 requests/responses,则此数字将大于实际文件大小。
我建议验证您的回复 body 尺码。虽然没有标准 API 来检索它(至少,在 LR 12.53 中,最新的可用版本)。据我所知,您的回复是分块的,因此我无法建议您使用任何有效的方法来执行此操作。这是基于将整个 body 存储到临时缓冲区(两次!)的相当低效的方法:
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 参数长度。
但是,如果您的 non-chuncked non-compressed 响应包含 Content-Length
header,您可以更有效地验证它:
web_reg_find("Text=Content-Length: 2373709",
"Search=Headers",
"RelFrameID=1",
LAST);
web_custom_request(...);
我有一个 LR 脚本,我正在使用它来调用 REST API 来下载文件。文件已成功下载,但我还需要下载文件大小的值以进行验证。这是我在 loadrunner 控制台中看到的内容。
Action.c(50): web_custom_request("GetImage") was successful, 2373709 body bytes, 528 header bytes, 99 chunking overhead bytes.
如何获取值 2373709??我尝试使用下面的代码,但它的大小 returns 与上面提到的有点不同,并没有解决问题。
HttpDownLoadSize=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
lr_output_message("File Size %i", HttpDownLoadSize);
如有任何帮助,我们将不胜感激。在此先感谢您的帮助。
HTTP_INFO_DOWNLOAD_SIZE
属性 存储最后一个 HTTP 响应的总下载大小。这包括 header 的总大小和所有响应的主体,以及可能的通信开销。 2373709 body bytes
是在特定步骤中获得的所有响应的总 body 大小,因此如果您的自定义请求步骤中有多个 requests/responses,则此数字将大于实际文件大小。
我建议验证您的回复 body 尺码。虽然没有标准 API 来检索它(至少,在 LR 12.53 中,最新的可用版本)。据我所知,您的回复是分块的,因此我无法建议您使用任何有效的方法来执行此操作。这是基于将整个 body 存储到临时缓冲区(两次!)的相当低效的方法:
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 参数长度。
但是,如果您的 non-chuncked non-compressed 响应包含 Content-Length
header,您可以更有效地验证它:
web_reg_find("Text=Content-Length: 2373709",
"Search=Headers",
"RelFrameID=1",
LAST);
web_custom_request(...);