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 ...
随机推荐
- document.all 用法
一. document.all是页面内所有元素的一个集合.例如: document.all(0)表示页面内第一个元素 二. document.all可以判断浏览器是否是IE if ...
- C#中对于变量的声明和初始化
C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待. ...
- 使用Linux的alternatives命令替换选择软件的版本
上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...
- textView布局的一点体会
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 字符串和整形数组的相互转化(JAVA程序)
package te; public class StringConvert { static int[] a = {0,1,1,0,1,1,0,2}; static String s = " ...
- CAP原理、一致性模型、BASE理论和ACID特性
CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...
- stickUp.js:98 Uncaught ReferenceError: vartop is not defined at HTMLDocument.<anonymous> (stickUp.js:98)
附加var vartop = 0;在var topMargin = 0;这之后,这里是我附加的代码:$(document).ready(function(){ var contentButton = ...
- vmware和centOS的安装
如果勾上了,会立即在本机开辟20g的空间,需要很长时间 选择电脑中ISO镜像的位置,之后点击开启虚拟机! 这个密码是root用户的密码!管理员密码! 可以选择我们的Minimal没有界面的!
- Java中关键词之this,super的使用
一.this关键词介绍. 说明:该知识点仅仅限于本人对其了解的范围. package com.study.java.oop; /** * 核心点:"this是指向对象本身的一个指针" ...
- Kafka.net使用编程入门(四)
新建一个cmd窗口,zkServer命令启动zookeeper 打开另一个cmd窗口,输入: cd D:\Worksoftware\Apachekafka2.11\bin\windows kafka- ...