url解码

by:授客 QQ1033553122

脚本结构如下:

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解码,中文解码存在以下问题

loadrunner 脚本开发-url解码的更多相关文章

  1. loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取

    转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 ...

  2. Loadrunner脚本开发规范

    Loadrunner脚本开发规范 目录 1.一般约定... 3 2.代码注释约定... 4 3.格式化代码... 5 1.一般约定 1.1具体脚本规则,必须在具体代码中加注释,以便脚本开发人员阅读和理 ...

  3. Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试

    脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试 by:授客 QQ:1033553122   目的 实现基于http协议的流媒体在线视频播放,服务器性能测试脚本,模拟用户浏览器方式在线播放 ...

  4. Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本

    脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...

  5. loadrunner 脚本开发-文件下载

    脚本开发-文件下载 by:授客 QQ:1033553122 下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作 ...

  6. loadrunner 脚本开发-基本知识

    脚本开发-基本知识 1)编码工具设置 自动补全输入Tools->General Options->Environment->Auto complete word 显示功能语法Tool ...

  7. Loadrunner 脚本开发-利用web_submit_data函数实现POST请求

    脚本开发-利用web_submit_data函数实现POST请求   by:授客 QQ:1033553122 概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的 ...

  8. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  9. Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试

    脚本开发- soap_request函数介绍及WebService接口测试 by:授客 QQ:1033553122 函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int so ...

随机推荐

  1. touch-action属性引起的探索

     最近在做微信项目的时候遇到一个奇怪的问题: 常购清单的商品多了以后往上滑没有任何反应,不能滑动.但商城首页又可以往上滑.而且ios没有这个问题,安卓才有这个问题. 起初我以为是因为这2个页面调用接口 ...

  2. java相关技术问答(二)

    String为什么是final的 首先是为了安全性,final表示不可变,不可被继承,不能修改其方法保证安全 在多线程环境下,final类型的String保证线程安全 String支持字符串常量池,相 ...

  3. location-alias

    location /images/ { alias /project/pic/; } 给定的路径对应于location的"/url" 这个URL; /images/f.jpg -- ...

  4. Maven(个人整理)(一,未完待续)

                                                      Maven 1. 什么是Maven? 乍一看,Maven看起来很多东西,但简而言之,Maven试图将 ...

  5. 往github提交代码流程

    一 首先在Github新建一个仓库,回到首页,点击右上角的New repository新建仓库. 二  在本地依次使用下面命令 …or create a new repository on the c ...

  6. D3.js的一些基础部分 (v3版本)

    最近公司有需求要做一些可视化的功能.之前一直都是用Echarts做的,但是Echarts难以满足我们的需求,经过多方请教,查找发现D3可以满足我们的需求.第一次接触到D3,发现这些图标的可交互性非常丰 ...

  7. 如何把checkbox做成radio一样的单选效果

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>复 ...

  8. rsync实现目录同步

    rsync rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. 外文名 rsync 全     ...

  9. 从零开始学 Web 之 ES6(三)ES6基础语法一

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  10. 关于QT中.pro文件中的相对路径

    被.pro文件中的相对路径给整糊涂了,仔细研究后,原来.pro文件中有两种相对路径. 一种情况下./表示.pro文件所在的目录 另一种情况下./表示构建生成目录 INCLUDEPATH SOURCE ...