问题描述:
脚本实现删除场景名称为test1的记录,删除请求响应删除成功{"success":true,"data":"","code":200,"message":"删除成功!"},但是前台显示该数据仍然存在

原脚本实现如下:
Action()
{
int i=1,busiSceneIdnum;
char* busiSceneId;
web_add_auto_header("Accept-Language",
"zh-Hans-CN,zh-Hans;q=0.5");
web_reg_save_param("queryResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_custom_request("queryScene",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t23.inf",
"Mode=HTML",
"EncType=application/json;charset=utf-8",
"Body={"current":1,"size":10,"busiSceneId":"","sceneName":""}",
LAST);
// Create a Json object from a string.
lr_eval_json("Buffer={queryResponseBody}",
"JsonObject=json_obj_1", LAST);
busiSceneIdnum=lr_json_get_values("JsonObject=json_obj_1",//获取响应体所有busiSceneId字段值并保存到数组JinKuList中,用于后面删除的参数化
"ValueParam=JinKuList",
"QueryString=$.data.tablesArr[*].busiSceneId",
"SelectAll=Yes",
LAST);
while(i<busiSceneIdnum){
lr_save_int(i,"index");
busiSceneId=lr_eval_string("{JinKuList_{index}}");
lr_output_message("busiSceneId=%s",lr_eval_string(busiSceneId));
//{"success":true,"data":"","code":200,"message":"删除成功!"}
web_reg_save_param("ResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_reg_save_param("respStatus",
"LB="success":",
"RB=,"data",
"Search=Body",
LAST);
web_reg_save_param("respMsg",
"LB=message":"",
"RB="}",
"Search=Body",
LAST);
lr_start_transaction("deleteJinKu");
web_custom_request("delete",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId=lr_eval_string(busiSceneId)&state=-1",
"Method=DELETE",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t24.inf",
"Mode=HTML",
LAST);
if(lr_eval_string("{respStatus}")){
lr_output_message("删除金库成功");
lr_end_transaction("deleteJinKu", LR_PASS);
}else{
lr_error_message("删除金库失败,失败原因为:%s",lr_eval_string("{respMsg}"));
lr_end_transaction("deleteJinKu", LR_FAIL);
}
i=i+1;
}
web_reg_save_param("LastResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_custom_request("queryScene_2",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t25.inf",
"Mode=HTML",
"EncType=application/json;charset=utf-8",
"Body={"size":5,"current":1,"busiSceneId":"","sceneName":""}",
LAST);
return 0;
}
日志显示:

经与开发沟通定位显示:实际发送的删除请求地址为http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId=lr_eval_string(busiSceneId)&state=-1,说明lr_eval_string(busiSceneId)函数的参数化并未起作用,而是本身作为字符串发起了请求,而系统针对非失败的请求均响应成功,所以问题解决的根本在于请求中的busiSceneId字段如何取值。
解决办法:
将请求地址url进行参数拼接实现,实现脚本如下:
lr_save_string(lr_paramarr_idx("JinKuList", i), "busiSceneId");//获取数组JinKuList中索引为i的值
web_custom_request("delete",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId={busiSceneId}&state=-1",
"Method=DELETE",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t24.inf",
"Mode=HTML",
LAST);
优化后的完整脚本如下:
Action()
{
int i=1,busiSceneIdnum;
web_add_auto_header("Accept-Language",
"zh-Hans-CN,zh-Hans;q=0.5");
web_reg_save_param("queryResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_custom_request("queryScene",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t23.inf",
"Mode=HTML",
"EncType=application/json;charset=utf-8",
"Body={"current":1,"size":10,"busiSceneId":"","sceneName":""}",
LAST);
// Create a Json object from a string.
lr_eval_json("Buffer={queryResponseBody}",
"JsonObject=json_obj_1", LAST);
busiSceneIdnum=lr_json_get_values("JsonObject=json_obj_1",//获取响应体所有busiSceneId字段值并保存到数组JinKuList中,用于后面删除的参数化
"ValueParam=JinKuList",
"QueryString=$.data.tablesArr[*].busiSceneId",
"SelectAll=Yes",
LAST);
while(i<busiSceneIdnum){
lr_save_string(lr_paramarr_idx("JinKuList", i), "busiSceneId");//获取数组JinKuList中索引为i的值
//{"success":true,"data":"","code":200,"message":"删除成功!"}
web_reg_save_param("ResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_reg_save_param("respStatus",
"LB="success":",
"RB=,"data",
"Search=Body",
LAST);
web_reg_save_param("respMsg",
"LB=message":"",
"RB="}",
"Search=Body",
LAST);
lr_start_transaction("deleteJinKu");
web_custom_request("delete",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/delete?busiSceneId={busiSceneId}&state=-1",
"Method=DELETE",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t24.inf",
"Mode=HTML",
LAST);
if(lr_eval_string("{respStatus}")){
lr_output_message("删除金库成功");
lr_end_transaction("deleteJinKu", LR_PASS);
}else{
lr_error_message("删除金库失败,失败原因为:%s",lr_eval_string("{respMsg}"));
lr_end_transaction("deleteJinKu", LR_FAIL);
}
i=i+1;
}
web_reg_save_param("LastResponseBody",
"LB=",
"RB=",
"Search=Body",
LAST);
web_custom_request("queryScene_2",
"URL=http://10.248.57.226:9010/user-center/uap-app-scene/queryScene",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://10.248.57.226:9010/U-C/",
"Snapshot=t25.inf",
"Mode=HTML",
"EncType=application/json;charset=utf-8",
"Body={"size":5,"current":1,"busiSceneId":"","sceneName":""}",
LAST);
return 0;
}
