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解码
原文地址:https://www.cnblogs.com/shouke/p/10158180.html