Loadrunner脚本开发的URL编码问题

发表于:2013-1-29 11:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黄彩梅    来源:51Testing软件测试网原创

  摘要:讲述了如何在loadrunner脚本中字符串转URL编码进行使用,以及如何进行URL解码使用。

  关键字:Loadrunner;脚本;URL编码;URL解码

  正文:

  我们经常看到IE会自动将输入到地址栏的非数字字母转换为url编码。

  在loadrunner录制脚本中,如果是URL编码则难以参数化或关联。如,某id值为“zZl/fMGfTT6eBXhcg3+PP4I6v7k”,但录制脚本中某web_submit_data的Action=http://192.168.1.88:8888/bodyLayout.do?index=1&id=zZl%2FfMGfTT6eBXhcg3%2BPP4I6v7k%3D,“zZl%2FfMGfTT6eBXhcg3%2BPP4I6v7k%3D”是URL编码。

  一,那要如何对字符串转为URL编码使用呢?请参考如下方法:

  1)创建头文件url.h

  url.h源码如下:

/* Converts an integer value to its hex character*/
char to_hex(char code) {
  static char hex[] = "0123456789abcdef";
  return hex[code & 15];
}

/* Returns a url-encoded version of str */
/* IMPORTANT: be sure to free() the returned string after use */
char *url_encode(char *str) {
  char *pstr = str;
  char *buf = (char *)malloc(strlen(str) * 3 + 1);
  char *pbuf = buf;
  while (*pstr) {
    if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~')
      *pbuf++ = *pstr;
    else if (*pstr == ' ')
      *pbuf++ = '+';
    else
      *pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15);
    pstr++;
  }
  *pbuf = '\0';
  free(pstr);
  free(pbuf);
  return buf;
}

  可用文本编辑器来创建的头文件url.h,文件名不一定是url可以自行定义为其他名称,文件可放在脚本路径下。如下图:

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/11/n-832511.html

  二,如果我们是获取到URL编码字符,想进行URL解压进行使用,又要如何进行呢?请参考如下方法:

  1)创建头文件urlde.h

  文件源码如下:

/* Converts a hex character to its integer value */
char from_hex(char ch) {
  return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10;
}

/* Returns a url-decoded version of str */
/* IMPORTANT: be sure to free() the returned string after use */
char *url_decode(char *str) {
  char *pstr = str;
  char *buf = (char *)malloc(strlen(str) + 1);
  char *pbuf = buf;
  while (*pstr) {
    if (*pstr == '%') {
      if (pstr[1] && pstr[2]) {
        *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]);
        pstr += 2;
      }
    } else if (*pstr == '+') {
      *pbuf++ = ' ';
    } else {
      *pbuf++ = *pstr;
    }
    pstr++;
  }
  *pbuf = '\0';
  free(pstr);
  free(pbuf);
  return buf;
}

  和上面的url.h一样可用文本编辑器来创建的头文件urlde.h,也可以把源码内容都放在url.h文件中。同样文件可放在脚本路径下。

  2)为脚本和脚本的Action添加头文件

  在loadrunner的HP Virtual User Generator打开的脚本中,在如图页面选中globals.h后右击菜单“Add files to Script”,

  在打开的窗口中,选择之前创建的头文件urlde.h,点击打开。

  为Action添加头文件:在Aciton脚本页面添加代码:“#include "urlde.h"”,放在文件头部,如图

  ……

  查看全文请点击下载:http://www.51testing.com/html/11/n-832511.html

  版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号