zoukankan      html  css  js  c++  java
  • LoadRunner字符编码转换

    LoadRunner进行脚本开发时,经常会出现请求中包含中文或特殊符号(+、=等)导致请求失败,或者响应报文中包含中文,输出响应报文乱码的情况,出现类似情况,可通过LR字符串编码转换函数lr_convert_string_encoding,将字符串转换为需要的编码方式;下面介绍LR字符转编码转换函数和长江的编码转换处理;

    1、LR编码转换函数lr_convert_string_encoding

    lr_convert_string_encoding( const char *sourceString, const char *fromEncoding,const char *toEncoding, const char *paramName);
    #sourceString:被转换的源字符串。
    #fromEncoding:转换前的字符编码。
    #toEncoding:要转换成为的字符编码。
    #paramName:转换后的目标字符串。

    字符编码方式:

    编码方式编码值
    LR_ENC_SYSTEM_LOCALE NULL
    LR_ENC_UTF8 "utf-8"
    UR_ENC_UNICODE "ucs-2"

    2、url编码

    在url请求消息中,请求参数包含中文或特殊符号,不能被正确识别,需要进行url编码;

    url编码前,请求url内容:http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile=yzk7kd+fsjj==

    url编码后,请求url内容:http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile=yzk7kd%2Bfsjj%3D%3D

    将特殊符号+号和=号进行了编码处理;

    url编码操作包含3步:

    1)调用lr_convert_string_encoding函数,将mobile参数内容由LR本身的无编码格式转换为UTF-8编码格式;该参数包含的字符串有字符串结束标识符NULL;

    2)调用lr_save_string函数,将转换后字符串的NULL标识符去掉;

    3)调用web_convert_param函数,将参数编码类型由PLAIN类型转换为URL类型;

    代码如下:

    //将包含中文或特殊字符的字符串保存到参数mobile中,然后将mobile参数编码转换为UTF8,保存到name1参数中
    lr_convert_string_encoding(lr_eval_string("{mobile}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"name1");
    
    //将name1参数字符串结尾标识符去掉,保存到变量param1中
    lr_save_string(lr_eval_string("{name1}"),"param1");
    
    //将param1编码类型由PLAIN转换为URL类型
    web_convert_param("param1","SourceEncoding=PLAIN","TargetEncoding=URL",LAST);
    
    //通过{param1}调用编码后的参数
    web_customer_request("request",
                    "URL=http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile={param1}",
                    "Method=POST",
                    "Body=",
                    LAST);

    3、响应报文乱码转码

    http请求报错,响应报文中中文显示乱码,为了方便定位问题,需要将响应报文中文进行转码,使其能够正常显示;

    响应报文乱码转码分为2步:

    1)调用web_reg_save_param函数,将响应报文保存到参数中;

    2)调用lr_convert_string_encoding函数,将参数由UTF-8编码转换为LR编码(LR_ENC_SYSTEM_LOCALE);

    代码如下:

    //获取响应报文
    web_reg_save_param("response",
                        "LB=",
                        "RB=",
                        LAST);
                        
    //调用http请求
    web_customer_request("request",
                    "URL=http://203.3.227.214:9080/request/auth/getUserToken?auth=01234128&mobile={param1}",
                    "Method=POST",
                    "Body=",
                    LAST);
                    
    //响应报文中文转码(UTF8转换为LR本地编码LR_ENC_SYSTEM_LOCAL)
    lr_convert_string_encoding(lr_eval_string("{response}"),
                                "LR_ENC_UTF8",
                                "LR_ENC_SYSTEM_LOCALE",
                                "str");
                                
    //输出转换后的响应内容
    lr_error_message("response:%s",lr_eval_string("{str}"));
  • 相关阅读:
    浅谈HTTP中Get与Post的区别
    js 执行完setTimeout再接着执行函数
    2017年书单
    js判断img是否存在
    md5
    GIF播放器
    java 集合(二)
    java 泛型
    抓包工具
    js计算地球两个经纬度之间的距离
  • 原文地址:https://www.cnblogs.com/wzl0916/p/14150570.html
Copyright © 2011-2022 走看看