1. Action()
  2. {
  3. //演示需要的一些变量,提前声明
  4. char *name = "yezi_zh";
  5. char *age = "";
  6. char *work = "engin";
  7. char *cuntry = "中国";
  8. char my_param[]; // 数组的大小根据自己拼接的字符串长度来定义,否则会出现内存错误
  9. /****************************
  10. * 需要的参数串为一下格式,这里只对汉字进行URL编码,英文字符不转为url编码,
  11. * name=yezi&age=30&work=engin&china=%e4%b8%ad%e5%9b%bd
  12. * *************************/
  13. //汉字编码转换为url编码
  14. EncodePlainToURL(cuntry,cuntry_urlencode);
  15. // 使用 srpintf 格式化需要传递的字符串
  16. sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry_urlencode);
  17. //打印看看格式化的是否是需要的
  18. lr_message(my_param);
  19. // 将已经存好变量的字符串转换成loadrunner使用的参数
  20. lr_save_string(my_param,"loadrunner_param");
  21. //调用参数,和普通参数使用没区别
  22. web_url("function","url=http://ip:port/function?{loadrunner_param}",LAST);
  23. return ;
  24. }
  25.  
  26. //定义一个转换url字符的函数
  27. void EncodePlainToURL(char *input_param, const char * output_param)
  28. {
  29. //将字符串编码转为UTF-8
  30. lr_convert_string_encoding(input_param, LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "strUTF8");
  31. //去掉C数组后面的null终止符
  32. lr_save_string(lr_eval_string("{strUTF8}"), output_param);
  33. //将UTF-8字符串URL encode
  34. web_convert_param(output_param, "SourceEncoding=PLAIN", "TargetEncoding=URL", LAST);
  35. }
  36.  

回放脚本

  1. Virtual User Script started at : 2017/6/30 10:19:53
  2. Starting action vuser_init.
  3. Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 1362 (Feb 2 2014 23:20:03) [MsgId: MMSG-27143]
  4. Run mode: HTML [MsgId: MMSG-26993]
  5. Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg" [MsgId: MMSG-27141]
  6. Ending action vuser_init.
  7. Running Vuser...
  8. Starting iteration 1.
  9. Maximum number of concurrent connections per server: 2 [MsgId: MMSG-26000]
  10. Starting action Action.
  11. Action.c(34): Notify: Saving Parameter "strUTF8 = 涓浗\x00".
  12. Action.c(36): Notify: Parameter Substitution: parameter "strUTF8" = "涓浗\x00"
  13. Action.c(36): Notify: Saving Parameter "cuntry_urlencode = 涓浗".
  14. Action.c(38): web_convert_param started [MsgId: MMSG-26355]
  15. Action.c(38): Notify: Saving Parameter "cuntry_urlencode = %E4%B8%AD%E5%9B%BD".
  16. Action.c(38): web_convert_param was successful [MsgId: MMSG-26392]
  17. Action.c(16): Notify: Parameter Substitution: parameter "cuntry_urlencode" = "%E4%B8%AD%E5%9B%BD"
  18. name=yezi_zh&age=30&work=engin&cuntry=1.559239E-2714B80X1.138D80P-767D1.293305E-2315BBD
  19. Action.c(20): Notify: Saving Parameter "loadrunner_param = name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD".
  20. The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
  21. Action.c(26): Notify: Parameter Substitution: parameter "loadrunner_param" = "name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD"
  22. The param is name=yezi_zh&age=30&work=engin&cuntry=%E4%B8%AD%E5%9B%BD
  23. Ending action Action.
  24. Ending iteration 1.
  25. Ending Vuser...
  26. Starting action vuser_end.
  27. Ending action vuser_end.
  28. Vuser Terminated.

注:本案例需要一些c语言基础与loadrunner基础。

如果需要所有的字符串转化为url编码,需要调整代码的执行顺序。

  1. Action()
  2. {
  3. //演示需要的一些变量,提前声明
  4. char *name = "yezi_zh";
  5. char *age = "30";
  6. char *work = "engin";
  7. char *cuntry = "中国";
  8. char my_param[1000]; // 数组的大小根据自己拼接的字符串长度来定义,否则会出现内存错误
  9. /****************************
  10. * 需要的参数串为一下格式
  11. *name%3dyezi_zh%26age%3d30%26work%3dengin%26cuntry%3d%e4%b8%ad%e5%9b%bd
  12. * *************************/
  13.  
  14. // 使用 srpintf 格式化需要传递的字符串
  15. sprintf(my_param,"name=%s&age=%s&work=%s&cuntry=%s",name,age,work,cuntry);
  16. //打印看看格式化的是否是需要的
  17. lr_message(my_param);
  18.  
  19. //参数转换为url编码
  20. EncodePlainToURL(my_param,"loadrunner_urlencode");
  21.  
  22. //调用参数,和普通参数使用没区别
  23. web_url("function","url=http://ip:port/function?{loadrunner_urlencode}",LAST);
  24. lr_message("The param is %s",my_param);
  25. lr_message("The param is %s",lr_eval_string("{loadrunner_urlencode}"));
  26. return 0;
  27. }

回访脚本

  1. Virtual User Script started at : // ::
  2. Starting action vuser_init.
  3. Web Turbo Replay of LoadRunner 12.0. for Windows ; build (Feb ::) [MsgId: MMSG-]
  4. Run mode: HTML [MsgId: MMSG-]
  5. Run-Time Settings file: "D:\zyh\VuGen\UrlEncoding\\default.cfg" [MsgId: MMSG-]
  6. Ending action vuser_init.
  7. Running Vuser...
  8. Starting iteration .
  9. Maximum number of concurrent connections per server: [MsgId: MMSG-]
  10. Starting action Action.
  11. name=yezi_zh&age=&work=engin&cuntry=中国
  12. Action.c(): Notify: Saving Parameter "strUTF8 = name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00".
  13. Action.c(): Notify: Parameter Substitution: parameter "strUTF8" = "name=yezi_zh&age=30&work=engin&cuntry=涓浗\x00"
  14. Action.c(): Notify: Saving Parameter "loadrunner_urlencode = name=yezi_zh&age=30&work=engin&cuntry=涓浗".
  15. Action.c(): web_convert_param started [MsgId: MMSG-]
  16. Action.c(): Notify: Saving Parameter "loadrunner_urlencode = name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD".
  17. Action.c(): web_convert_param was successful [MsgId: MMSG-]
  18. The param is name=yezi_zh&age=&work=engin&cuntry=中国
  19. Action.c(): Notify: Parameter Substitution: parameter "loadrunner_urlencode" = "name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD"
  20. The param is name%3Dyezi_zh%26age%3D30%26work%3Dengin%26cuntry%3D%E4%B8%AD%E5%9B%BD
  21. Ending action Action.
  22. Ending iteration .
  23. Ending Vuser...
  24. Starting action vuser_end.
  25. Ending action vuser_end.
  26. Vuser Terminated.

代码只说明原理,具体使用根据数据来源来替换。
文中的变量在实际使用场景中多是关联获取的动态参数,结合参数的使用来使用本代码.

本文没写结合实际场景的参数使用,具有一定项目经验的学习者可以提升工具的使用熟练度。

建议:对于Loadrunner的使用,多使用F1查看帮助文档;

规定:在loadrunner中使用 c语言的变量,一定要在函数一开始定义,否则会出错(和内存有关的)。数组的定义需要根据实际情况来定义,c语言对内存的控制很严格,养成严谨的编码习惯很重要。

loadrunner 手工参数拼接与l oadrunner的url编码的更多相关文章

  1. javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码

     乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路   先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符  -- ...

  2. 老李秘技:LoadRunner支持参数文件极限是多大

    老李秘技:LoadRunner支持参数文件极限是多大   Controller不支持参数文件大于20m

  3. HttpClient4.X发送Get请求的url参数拼接

    HttpClient4.X发送Get请求的参数拼接 使用httpClient发送get请求时,请求参数可以以?key=val&key1=val1的拼接到url后面. 但是请求参数较多时,这种方 ...

  4. LoadRunner中参数的设置

    LoadRunner中参数的设置 参数个数:10个 tester1.tester2.tester3…tester10 迭代次数:2次 场景设置(一):Sequential+Each Iteration ...

  5. angular6 路由拼接查询参数如 ?id=1 并获取url参数

    angular6 路由拼接查询参数如 ?id=1 并获取url参数 路由拼接参数: <div class="category-border" [routerLink]=&qu ...

  6. JS中URL编码参数(UrlEncode)

    JS中URL编码参数(UrlEncode) 网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的 ...

  7. javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  8. 一些http或https请求的参数,什么情况下需要urlencode编码

    http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&na ...

  9. WebApi中对请求参数和响应内容进行URL编码解码

    项目经测试,发现从IE提交的数据,汉字会变成乱码,实验了网上很多网友说的给ajax加上contentType:"application/x-www-form-urlencoded; char ...

随机推荐

  1. A*算法的理解与简单实现

    基本定义 一种寻路算法,特点是:启发式的,效率高,基本思路比较简单. 用途 寻路.在指定的地图上,考虑到地图上的移动代价,找到最优的路径. 核心概念 开表,闭表,估值函数. 开表 开表,记录了当前需要 ...

  2. 手机共享成wifi热点电脑无法上网的问题

    第二次遇到这样的问题,每次百度都不能解决我遇到的问题.上一次已经自己鼓捣着解决了,后来忘记怎么弄好的.第二次遇到这个问题,又是浪费了许多时间后,偶然弄好了,突然想起来上次就是这样弄好的.所以就针对我自 ...

  3. Java学习笔记——山西煤老板蛋疼的拉车问题

    小荷才露尖尖角,早有蜻蜓立上头 --小池 这个问题是这样描述的: 山西煤老板有3000吨煤,要运到1000km公里外的地方卖.他选择使用火车来运煤,每辆火车行驶一公里将消耗一吨煤,且火车载货上限为10 ...

  4. 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)

    包括 Dockerfile 在内的任何脚本和程序都会出错.有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile. 先回顾一下通过 Dockerfile 构建镜像的过程: ...

  5. C#超简单方法实现两个richtextbox控件滚动条同步滚动

    此文章属于作者原创,转载请注明,谢谢 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者 ...

  6. 17、Map接口及其常用子类(Hashtable、HashMap、WeakHashMap)

    17.Map接口 Map没有继承Collection接口,Map提供key到value的映射.一个Map中不能包含相同的key,每个key只能映射一个value.Map接口提供3种集合的视图,Map的 ...

  7. Java 8 Learn Notes

    Main reference: [1] http://winterbe.com/posts/2014/03/16/java-8-tutorial/ [2] https://plus.google.co ...

  8. convertView的疑问(软件管理器)

    package com.hixin.appexplorer; import java.util.List; import android.app.Activity; import android.co ...

  9. 无锁模式的Vector

    这两天学习无锁的并发模式,发现相比于传统的 同步加锁相比,有两点好处1.无锁 模式 相比于 传统的 同步加锁  提高了性能 2.无锁模式 是天然的死锁免疫 下来介绍无锁的Vector--- LockF ...

  10. javaWeb学习总结(6)- 会话之cookie技术

    什么是会话? 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话. 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为 ...