• loadrunner 脚本开发-url解码


    url解码

    by:授客 QQ1033553122

     

    脚本结构如下:

     

    loadrunner <wbr>脚本开发-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 = '';

     

        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;

    }

     

    输出结果:

     

    loadrunner <wbr>脚本开发-url解码
     

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

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

     

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

    loadrunner <wbr>脚本开发-url解码
  • 相关阅读:
    bzoj2959
    学习笔记::lct
    bzoj3203
    bzoj1319
    bzoj3625
    bzoj3992
    bzoj1565
    bzoj3513
    平常练习动归(1.胖男孩)———最长公共子序列
    2016 noip 复赛 day2
  • 原文地址:https://www.cnblogs.com/shouke/p/10158180.html
Copyright © 2020-2023  润新知