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 ...
随机推荐
- 四、I/O
九.什么是I/O: 9.1.在Windows程序中,基础的运行单位为线程,为每一个线程分配一个处理器,可以让系统执行多个操作, 9.2.当线程进行一个I/O操作时,会被挂起,从而影响性能,为了解决这类 ...
- 堆和栈(java内存)
栈内存: 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为 ...
- A*算法的理解与简单实现
基本定义 一种寻路算法,特点是:启发式的,效率高,基本思路比较简单. 用途 寻路.在指定的地图上,考虑到地图上的移动代价,找到最优的路径. 核心概念 开表,闭表,估值函数. 开表 开表,记录了当前需要 ...
- 下拉菜单制作——利用CSS实现的一个实例
本文实现了一个经典的下拉菜单的制作. 首先,写出Html部分: <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- 新鲜出炉的less与sass较量
最近接触了Bootstrap,涉及到了LESS,CSS的预处理器使用最广泛的就是LESS和Sass,都是努力把CSS武装成为开发语言,让它从简单的描述性语言过渡到具有程序式特性的语言,主要的特性就是: ...
- 学习笔记:javascript内置对象:数学对象
1.数学对象 -Math 2.对象常用属性 3.常用函数 4.对数值类型数据保留小数的函数
- Hibernate参数绑定的五种方式
Hibernate参数绑定 参数绑定优点: (1)安全性 防止用户恶意输入条件和恶意调用存储过程 (2)提高性能 底层采用JDBC的PreparedStatement预定义sql功能,后期查询直接从缓 ...
- Apache solr(一)
概念:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache Solr 中存储的资源是以 Docum ...
- Visual Studio Code for mac
Visual Studio Code for mac 将下载文件解压拖到应用程序文件夹即可 下载地址:链接: https://pan.baidu.com/s/1geHL5f1 密码: 2fdw
- Opencv在linux下安装
Opencv in Linux These steps have been tested for Ubuntu 10.04 but should work with other distros as ...