loadrunner 手工参数拼接与l oadrunner的url编码
Action()
{
//演示需要的一些变量,提前声明
char *name = "yezi_zh";
char *age = "";
char *work = "engin";
char *cuntry = "中国";
char my_param[]; // 数组的大小根据自己拼接的字符串长度来定义,否则会出现内存错误
/****************************
* 需要的参数串为一下格式,这里只对汉字进行URL编码,英文字符不转为url编码,
* name=yezi&age=30&work=engin&china=%e4%b8%ad%e5%9b%bd
* *************************/
//汉字编码转换为url编码
EncodePlainToURL(cuntry,cuntry_urlencode);
// 使用 srpintf 格式化需要传递的字符串
sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry_urlencode);
//打印看看格式化的是否是需要的
lr_message(my_param);
// 将已经存好变量的字符串转换成loadrunner使用的参数
lr_save_string(my_param,"loadrunner_param");
//调用参数,和普通参数使用没区别
web_url("function","url=http://ip:port/function?{loadrunner_param}",LAST);
return ;
} //定义一个转换url字符的函数
void EncodePlainToURL(char *input_param, const char * output_param)
{
//将字符串编码转为UTF-8
lr_convert_string_encoding(input_param, LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "strUTF8");
//去掉C数组后面的null终止符
lr_save_string(lr_eval_string("{strUTF8}"), output_param);
//将UTF-8字符串URL encode
web_convert_param(output_param, "SourceEncoding=PLAIN", "TargetEncoding=URL", LAST);
}
回放脚本
Virtual User Script started at : 2017/6/30 10:19:53
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 1362 (Feb 2 2014 23:20:03) [MsgId: MMSG-27143]
Run mode: HTML [MsgId: MMSG-26993]
Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg" [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Maximum number of concurrent connections per server: 2 [MsgId: MMSG-26000]
Starting action Action.
Action.c(34): Notify: Saving Parameter "strUTF8 = 涓浗\x00".
Action.c(36): Notify: Parameter Substitution: parameter "strUTF8" = "涓浗\x00"
Action.c(36): Notify: Saving Parameter "cuntry_urlencode = 涓浗".
Action.c(38): web_convert_param started [MsgId: MMSG-26355]
Action.c(38): Notify: Saving Parameter "cuntry_urlencode = %E4%B8%AD%E5%9B%BD".
Action.c(38): web_convert_param was successful [MsgId: MMSG-26392]
Action.c(16): Notify: Parameter Substitution: parameter "cuntry_urlencode" = "%E4%B8%AD%E5%9B%BD"
name=yezi_zh&age=30&work=engin&cuntry=1.559239E-2714B80X1.138D80P-767D1.293305E-2315BBD
Action.c(20): Notify: Saving Parameter "loadrunner_param = name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD".
The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
Action.c(26): Notify: Parameter Substitution: parameter "loadrunner_param" = "name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD"
The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
注:本案例需要一些c语言基础与loadrunner基础。
如果需要所有的字符串转化为url编码,需要调整代码的执行顺序。
Action()
{
//演示需要的一些变量,提前声明
char *name = "yezi_zh";
char *age = "30";
char *work = "engin";
char *cuntry = "中国";
char my_param[1000]; // 数组的大小根据自己拼接的字符串长度来定义,否则会出现内存错误
/****************************
* 需要的参数串为一下格式
*name%3dyezi_zh%26age%3d30%26work%3dengin%26cuntry%3d%e4%b8%ad%e5%9b%bd
* *************************/ // 使用 srpintf 格式化需要传递的字符串
sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry);
//打印看看格式化的是否是需要的
lr_message(my_param); //参数转换为url编码
EncodePlainToURL(my_param,"loadrunner_urlencode"); //调用参数,和普通参数使用没区别
web_url("function","url=http://ip:port/function?{loadrunner_urlencode}",LAST);
lr_message("The param is %s",my_param);
lr_message("The param is %s",lr_eval_string("{loadrunner_urlencode}"));
return 0;
}
回访脚本
Virtual User Script started at : // ::
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0. for Windows ; build (Feb ::) [MsgId: MMSG-]
Run mode: HTML [MsgId: MMSG-]
Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg" [MsgId: MMSG-]
Ending action vuser_init.
Running Vuser...
Starting iteration .
Maximum number of concurrent connections per server: [MsgId: MMSG-]
Starting action Action.
name=yezi_zh&age=&work=engin&cuntry=中国
Action.c(): Notify: Saving Parameter "strUTF8 = name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00".
Action.c(): Notify: Parameter Substitution: parameter "strUTF8" = "name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00"
Action.c(): Notify: Saving Parameter "loadrunner_urlencode = name=yezi_zh&age=30&work=engin&cuntry=涓浗".
Action.c(): web_convert_param started [MsgId: MMSG-]
Action.c(): Notify: Saving Parameter "loadrunner_urlencode = name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD".
Action.c(): web_convert_param was successful [MsgId: MMSG-]
The param is name=yezi_zh&age=&work=engin&cuntry=中国
Action.c(): Notify: Parameter Substitution: parameter "loadrunner_urlencode" = "name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD"
The param is name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD
Ending action Action.
Ending iteration .
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
代码只说明原理,具体使用根据数据来源来替换。
文中的变量在实际使用场景中多是关联获取的动态参数,结合参数的使用来使用本代码.
本文没写结合实际场景的参数使用,具有一定项目经验的学习者可以提升工具的使用熟练度。
建议:对于Loadrunner的使用,多使用F1查看帮助文档;
规定:在loadrunner中使用 c语言的变量,一定要在函数一开始定义,否则会出错(和内存有关的)。数组的定义需要根据实际情况来定义,c语言对内存的控制很严格,养成严谨的编码习惯很重要。
loadrunner 手工参数拼接与l oadrunner的url编码的更多相关文章
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
- 老李秘技:LoadRunner支持参数文件极限是多大
老李秘技:LoadRunner支持参数文件极限是多大 Controller不支持参数文件大于20m
- HttpClient4.X发送Get请求的url参数拼接
HttpClient4.X发送Get请求的参数拼接 使用httpClient发送get请求时,请求参数可以以?key=val&key1=val1的拼接到url后面. 但是请求参数较多时,这种方 ...
- LoadRunner中参数的设置
LoadRunner中参数的设置 参数个数:10个 tester1.tester2.tester3…tester10 迭代次数:2次 场景设置(一):Sequential+Each Iteration ...
- angular6 路由拼接查询参数如 ?id=1 并获取url参数
angular6 路由拼接查询参数如 ?id=1 并获取url参数 路由拼接参数: <div class="category-border" [routerLink]=&qu ...
- JS中URL编码参数(UrlEncode)
JS中URL编码参数(UrlEncode) 网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的 ...
- javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- 一些http或https请求的参数,什么情况下需要urlencode编码
http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&na ...
- WebApi中对请求参数和响应内容进行URL编码解码
项目经测试,发现从IE提交的数据,汉字会变成乱码,实验了网上很多网友说的给ajax加上contentType:"application/x-www-form-urlencoded; char ...
随机推荐
- mysql的一些使用操作
1:如果空闲时间很长导致mysql报错: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last pa ...
- mysql修改数据库名
1.创建新库 2.创建新库用户 3.备份旧库 4.修改表名 5.删除旧库 环境:mysql5.6已经有数据库dbbzpt,需要把它修改为dbedu. 1,2.使用root用户登录创建新库.创建 ...
- linux之vi编辑器的基础命令
1,假如要在这个php文件的phpinfo.php;之后加入一行,我们可以先按键盘的"a",光标就会跳转到之前绿色光标之后,也就是说,"a"是代表在当前光标之后 ...
- [刷题]算法竞赛入门经典(第2版) 5-4/UVa10763 - Foreign Exchange
题意:有若干交换生.若干学校,有人希望从A校到B校,有的想从B到C.C到A等等等等.如果有人想从A到B也刚好有人想从B到A,那么可以交换(不允许一对多.多对一).看作后如果有人找不到人交换,那么整个交 ...
- arm处理器
arm处理器 arm处理器相关 1.体系架构定义了指令集(ISA)和基于这一体系结构下处理器的编程模型. arm卖的是架构或者已经设计好的公版ip核 卖给苹果高通的是架构,需要苹果高通通过架构设计自己 ...
- 【WPF】三维模型中的“照相机”
WPF 部分支持三维模型,为啥说是部分支持?毕竟 WPF 的侧重点还是在应用开发上,虽然也有些游戏是用 WPF 开发的,不过,老周想啊,如果真要开发游戏,最好用专门的框架,WPF 应当用于开发应用功能 ...
- 学习笔记TF009:对数几率回归
logistic函数,也称sigmoid函数,概率分布函数.给定特定输入,计算输出"success"的概率,对回题回答"Yes"的概率.接受单个输入.多维数据或 ...
- Linux C 程序的开发环境
1.开发环境的构成 编辑器 vim,vi 编译器 gcc 调试器 gdb 函数库glibc 系统头文件glibc_header 2.gcc编译器 功能强大.性能优越的多平台编译器,gcc可以将c.c+ ...
- 【CSS入门基础,有需要的看过来哦】心境,心静,不轻言放弃!---致CSS
整理一下近一周学习的有关CSS的基础知识笔记: CSS语法必须写在<style>标签中哦~/*注释*/ [CSS常用背景属性]background background-color:背景色 ...
- 将非官方扩展程序加入chrome的白名单
参考来源:http://xclient.info/a/1ddd2a3a-d34b-b568-c0d0-c31a95f0b309.html com.google.Chrome.mobileconfig ...