loadrunner 脚本开发-url解码

简介: loadrunner 脚本开发-url解码


脚本结构如下:

 


 

Action.c中的代码如下:

 

int htoi(char *s)

{

   int value = 0;

   int c = 0;

 

 

   c = ((unsigned char *)s)[0];

 

   if (isupper(c))

   {

       c = tolower(c);

   }

 

   value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;

 

   c = ((unsigned char *)s)[1];

   if (isupper(c))

   {

       c = tolower(c);

 

   }

 

   value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;

 

   return (value);

}


void url_decode(char *str, int len)

{

   char *dest = str;

   char *data = str;

   char *dst = NULL;

 

   dest = (char*)malloc(len + 1);

   dst = dest;

 

   while (len--)

   {

       if (*data == '+')

       {

           *dest = ' ';

       }

       else if (*data == '%' && len >= 2 &&

                isxdigit((int) *(data + 1)) &&

                isxdigit((int) *(data + 2)))   

       {

           #ifndef CHARSET_EBCDIC

              *dest = (char)htoi(data + 1);  

           #else

               *dest = os_toebcdic[(char) htoi(data + 1)];

           #endif

 

           data += 2;

           len -= 2;

       }

       else

       {

           *dest = *data;

       }

 

       data++;

       dest++;

   }

   *dest = '\0';

 

   lr_output_message(dst);

   free(dest);

   dest = NULL;

   dst = NULL;

}

 

 

const unsigned char os_toebcdic[256] = {

       0x00,   0x01,   0x02,   0x03,   0x37,   0x2d,   0x2e,   0x2f,  

       0x16,   0x05,   0x15,   0x0b,   0x0c,   0x0d,   0x0e,   0x0f,  

       0x10,   0x11,   0x12,   0x13,   0x3c,   0x3d,   0x32,   0x26,  

       0x18,   0x19,   0x3f,   0x27,   0x1c,   0x1d,   0x1e,   0x1f,  

       0x40,   0x5a,   0x7f,   0x7b,   0x5b,   0x6c,   0x50,   0x7d,  

       0x4d,   0x5d,   0x5c,   0x4e,   0x6b,   0x60,   0x4b,   0x61,  

       0xf0,   0xf1,   0xf2,   0xf3,   0xf4,   0xf5,   0xf6,   0xf7,  

       0xf8,   0xf9,   0x7a,   0x5e,   0x4c,   0x7e,   0x6e,   0x6f,  

       0x7c,   0xc1,   0xc2,   0xc3,   0xc4,   0xc5,   0xc6,   0xc7,  

       0xc8,   0xc9,   0xd1,   0xd2,   0xd3,   0xd4,   0xd5,   0xd6,  

       0xd7,   0xd8,   0xd9,   0xe2,   0xe3,   0xe4,   0xe5,   0xe6,  

       0xe7,   0xe8,   0xe9,   0xad,   0xe0,   0xbd,   0x5f,   0x6d,  

       0x79,   0x81,   0x82,   0x83,   0x84,   0x85,   0x86,   0x87,  

       0x88,   0x89,   0x91,   0x92,   0x93,   0x94,   0x95,   0x96,  

       0x97,   0x98,   0x99,   0xa2,   0xa3,   0xa4,   0xa5,   0xa6,  

       0xa7,   0xa8,   0xa9,   0xc0,   0x4f,   0xd0,   0xa1,   0x07,  

       0x20,   0x21,   0x22,   0x23,   0x24,   0x04,   0x06,   0x08,  

       0x28,   0x29,   0x2a,   0x2b,   0x2c,   0x09,   0x0a,   0x14,  

       0x30,   0x31,   0x25,   0x33,   0x34,   0x35,   0x36,   0x17,  

       0x38,   0x39,   0x3a,   0x3b,   0x1a,   0x1b,   0x3e,   0xff,  

       0x41,   0xaa,   0x4a,   0xb1,   0x9f,   0xb2,   0x6a,   0xb5,  

       0xbb,   0xb4,   0x9a,   0x8a,   0xb0,   0xca,   0xaf,   0xbc,  

       0x90,   0x8f,   0xea,   0xfa,   0xbe,   0xa0,   0xb6,   0xb3,  

       0x9d,   0xda,   0x9b,   0x8b,   0xb7,   0xb8,   0xb9,   0xab,  

       0x64,   0x65,   0x62,   0x66,   0x63,   0x67,   0x9e,   0x68,  

       0x74,   0x71,   0x72,   0x73,   0x78,   0x75,   0x76,   0x77,  

       0xac,   0x69,   0xed,   0xee,   0xeb,   0xef,   0xec,   0xbf,  

       0x80,   0xfd,   0xfe,   0xfb,   0xfc,   0xba,   0xae,   0x59,  

       0x44,   0x45,   0x42,   0x46,   0x43,   0x47,   0x9c,   0x48,  

       0x54,   0x51,   0x52,   0x53,   0x58,   0x55,   0x56,   0x57,  

       0x8c,   0x49,   0xcd,   0xce,   0xcb,   0xcf,   0xcc,   0xe1,  

       0x70,   0xdd,   0xde,   0xdb,   0xdc,   0x8d,   0x8e,   0xdf    /* ................   */

};

 

Action()

{

   int len = 0;

 

   char * Params="{"dataList":[{"accountId":"10002","customerScore":0,"isCommnet":0,"isDated":0,"";

   len = strlen(Params);

   url_decode(Params,len);

   return 0;

}


输出结果:

 


可将输出结果同在线解码工具的输出做对比

http://tool.chinaz.com/Tools/URLEncode.aspx

 

 

注意:以上脚本仅适用于不含中文字符的url解码,中文解码存在以下问题


 

目录
相关文章
|
2月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
97 4
|
安全 测试技术 网络安全
软件测试|测试平台开发-Flask 入门:URL组成部分详解
软件测试|测试平台开发-Flask 入门:URL组成部分详解
|
3月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
4月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
125 12
|
4月前
|
API
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
|
5月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
325 0
|
7月前
|
数据采集 Python
python 如何url解码
【4月更文挑战第14天】
140 1
|
7月前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
162 0
|
JavaScript 前端开发
JS实现url的编码和解码
JS实现url的编码和解码
117 1
|
7月前
|
Python
Python-URL编码和URL解码方法
Python-URL编码和URL解码方法
128 0