zoukankan      html  css  js  c++  java
  • [原创] web_custom_request 与 Viewstate

      在用loadrunner对.net编写的website进行性能测试时,经常会遇上一些hidden fields,例如,CSRFTOKEN、VIEWSTATE、EVENTVALIDATION等,而对于这些hidden field,有时候需要进行前后关联。但是最近发现一个很奇怪的现象:已经通过web_reg_save_param_regexp函数准确的获取了这些hidden fields,并且所得的param在web_submit_data可以正常使用,但是用在web_custom_request时却总是报错,百思不得其解!经过google后终于弄明白了:

    进行关联通常用到的都是web_reg_save_param、web_reg_save_param_ex、web_reg_save_param_regexp这三个函数,需要注意的是这三个函数拿回来的param的值都是html编码的。

    对于html编码的param,web_submit_data函数可以直接使用,但是web_custom_request则不可以直接使用,而需要通过函数web_convert_param先转换为url编码才可以,否则是会产生error的。

    int web_convert_param( const char *ParamName, [char *SourceString] char *SourceEncoding, char *TargetEncoding, LAST ); 

    Example 1

    The following example uses web_convert_param to convert HTML strings to URL and plain text formats.

    The Web page has these texts:

    Sample HTML code to be converted: <mytag>& End

    Sample plain text to be converted: 1–AD X=0+2 End

    Action()

    {

    web_reg_save_param("HTML",

        "LB=Sample HTML code to be converted: ",

        "RB= End",

        LAST );

     

    web_reg_save_param("HTML1",

        "LB=Sample HTML code to be converted: ",

        "RB= End",

        LAST );

     

    web_reg_save_param("Plaintext",

        "LB=Sample plain text to be converted: ",

        "RB= End",

        LAST );

     

    web_url("web_url",

        "URL=http://lazyboy/html/convert_param_page.html",

         "TargetFrame=",

        "Resource=0",

         "Referer=",

         LAST );

     

    web_convert_param("HTML", "SourceEncoding=HTML",

         "TargetEncoding=URL", LAST );

    web_convert_param("HTML1", "SourceEncoding=HTML",

         "TargetEncoding=PLAIN", LAST );

    web_convert_param("Plaintext", "SourceEncoding=HTML",

         "TargetEncoding=URL", LAST );

     

    web_reg_save_param("Result",

        "LB=<code>entry = ",

        "RB=</code>",

        LAST );

     

    web_custom_request("web_custom_request",

        "URL=http://lazarus/cgi–bin/post_query.exe",

        "Method=POST",

        "TargetFrame=",

        "Resource=0",

        "Referer=",

        "Body=entry={Plaintext},{HTML}",

        LAST );

    return 0;

    }

    The following section shows the relevant sections of the log file that resulted from running the above segment:

    Running Vuser...

    Action.c(21): Saving Parameter "HTML = &lt;mytag&gt;&amp;"

    Action.c(21): Saving Parameter "HTML1 = &lt;mytag&gt;&amp;"

    Action.c(21): Saving Parameter "Plaintext = 1–AD X=0+2"

    After web_url:

    Action.c(28): Saving Parameter "HTML = %3Cmytag%3E%26"

    Action.c(28): web_convert_param was successful

    Action.c(29): Saving Parameter "HTML1 = <mytag>&"

    Action.c(29): web_convert_param was successful

    Action.c(30): Saving Parameter "Plaintext = 1–AD+X%3D0%2B2"

    Action.c(30): web_convert_param was successful

    web_custom_request:

    Action.c(37): Parameter Substitution: parameter "Plaintext" = "1–AD+X%3D0%2B2"

    Action.c(37): Parameter Substitution: parameter "HTML" = "%3Cmytag%3E%26"

    Action.c(37): Saving Parameter "Result = 1–AD X=0+2,<mytag>&"

    Example 2

    This example shows the use of the SourceString argument. Note that the source string can contain parameters. The source string is first evaluated, replacing parameters with their values, then converted to PLAIN. The result is stored in parameter "targetParam."

    web_convert_param(

            "targetParam",

            "SourceString={param1}abc{param2}",

            "SourceEncoding=HTML",

            "TargetEncoding=PLAIN",

             LAST ); 

  • 相关阅读:
    多线程常见面试题
    Redis常见面试题总结
    ehcache缓存技术的特性
    sar 命令详解
    面试题
    BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议)
    课后习题-10
    ulimit 命令详解
    课后习题-9
    netstat 命令详解
  • 原文地址:https://www.cnblogs.com/lci05/p/4057281.html
Copyright © 2011-2022 走看看