zoukankan      html  css  js  c++  java
  • 转:web_custom_request 和 web_submit_data的差别

    web_custom_request方法可以发送POST和GET类型的请求

    web_submit_data只能发送POST类型的请求

    所有web_submit_data方法发送的请求都可以使用web_custom_request来实现

    web_custom_request可以实现web_submit_data无法实现的请求,

    比如“查询所有邮件并删除”这个案例中,查询时我们使用关联把所有邮件对应的标识抓取成一个数组,如果使用web_submit_data来完成这 个删除的请求,需要很多个web_submit_data请求才能完成,但使用web_custom_request就可以通过一个请求完成,方法是自己 写代码拼一个web_custom_request 方法POST请求的Body值。

    web_submit_data请求中提交的数据是以这样的方式存在的

    Name=属性名称,,Value=属性值” 

    如:
           “Name=locale”, “Value=L2″, ENDITEM, 
         “Name=dataCenter”, “Value=yh”, ENDITEM, 
         “Name=username”, “Value=12044″, ENDITEM,

     如果我们想提交的某个属性包含包含多个值(上文的例子中就是这样的情况),它就无法处理了,只能通过多个web_submit_data来处理。

     下面是一个典型的web_submit_data和web_custom_request请求,可以看到web_custom_request中提交的数据(body)是以这样的方式存在的

    Body=属性名称=属性值&属性名称=属性值&……

        web_submit_data(“login”, 
            “Action=http://192.168.14.21:78……ndex_sso.jsp”, 
            “Method=POST”, 
            “RecContentType=text/html”, 
            “Referer=http://192.168.14.21:7888…%3D%2Findex_sso.jsp”, 
            “Mode=HTML”, 
            ITEMDATA, 
            “Name=locale”, “Value=L2″, ENDITEM, 
            “Name=dataCenter”, “Value=yh”, ENDITEM, 
            “Name=username”, “Value=12044″, ENDITEM, 
            “Name=password”, “Value=”, ENDITEM, 
            “Name=_eventId”, “Value=submit”, ENDITEM, 
            “Name=isPureWeb”, “Value=true”, ENDITEM, 
            “Name=solutionName”, “Value=eas”, ENDITEM, 
            “Name=dbType”, “Value=1″, ENDITEM, 
            “Name=easSessionId”, “Value=eas;yh;L2;12044;BaseDB”, ENDITEM,        
            “Name=userAuthPattern”, “Value=BaseDB”, ENDITEM, 
            “Name=loginFlow”, “Value=true”, ENDITEM, 
            LAST);

        web_custom_request(“CommonQueryDialog.jsf_3″,
            “URL=http://192.168.14.21:7888/ea…ueryDialog.jsf”,
            “Method=POST”,
            “Resource=0″,
            “RecContentType=text/javascript”,
            “Referer=http://192.168.14.21:7888/…DailyLoanUERc%2Bihtml”,
            “Mode=HTML”,
            “EncType=application/x-www-form-urlencoded;charset=UTF-8″,
            “Body=queryDialog%3AselectSolutionList=%E6%9F%A5%E8%AF%A2&queryDialog%3Aj_iduserFilterPanel_3_value=Kd5QoAEPEADgAAf8wKgEDMznrtQ%3D&=%E6%B9%96%E5%8D%97%E4%BA%9A%E5%8D%8E%E4%B9%B3%E4%B8%9A%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&queryDialog%3Aj_iduserFilterPanel_6=&queryDialog%3Aj_iduserFilterPanel_9_value=3&=%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E&queryDialog%3Aj_iduserFilterPanel_11=0&queryDialog%3Aj_iduserFilterPanel_14_value=&=&queryDialog%3Aj_iduserFilterPanel_17_value=&=&queryDialog%3Aj_iduserFilterPanel_20_value=&=&queryDialog%3Aj_iduserFilterPanel_23_value=&=&queryDialog%3Aj_iduserFilterPanel_26_value=&=&queryDialog%3Aj_iduserFilterPanel_29_value=&=&queryDialog%3Aj_iduserFilterPanel_32=&queryDialog%3Aj_iduserFilterPanel_35_value=&=&queryDialog%3Aj_iduserFilterPanel_38=2008-08-01&queryDialog%3Aj_iduserFilterPanel_41=2008-08-28&queryDialog%3AfilterGrid_modifiedData=%5B%5D&queryDialog%3AfilterGrid_removedData=%5B%5D&queryDialog%3A_postback=&queryDialog%3AuserFilterPanel=%2Fcp%2Fbc%2FdailyLoanBillCommQuery.xhtml&javax.faces.ViewState={vs2}”,
            LAST);

    通过我的观察,发现有两种情况下的POST请求会被LoadRunner录制为web_custom_request,

    1.        上文提到的批量提交多条同属性名称的数据的请求
    2.        header属性x-requested-by值为XMLHttpRequest的POST请求

    这两种实现请求的方法还有一个需要注意的地方就是web_custom_request中body中的属性值如果包含一些特殊字符,必须通过URL编码,否则Web服务器会返回500错误,一个典型的例子是如果Body中包含ViewState,ViewState中常常有“=”之类的特殊字符,此时必须通过URL编码,LoadRuner中提供了一个这样的编码转换函数

           web_convert_param(“vs1″, “SourceEncoding=HTML”,  “TargetEncoding=URL”, LAST);

    除LoadRunner外,你可以在Fiddler中按Ctrl+E来转换

  • 相关阅读:
    Educational Codeforces Round 85 D. Minimum Euler Cycle(模拟/数学/图)
    Educational Codeforces Round 85 C. Circle of Monsters(贪心)
    NOIP 2017 提高组 DAY1 T1小凯的疑惑(二元一次不定方程)
    Educational Codeforces Round 85 B. Middle Class(排序/贪心/水题)
    Educational Codeforces Round 85 A. Level Statistics(水题)
    IOS中的三大事件
    用Quartz 2D画小黄人
    strong、weak、copy、assign 在命名属性时候怎么用
    用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
    Attempting to badge the application icon but haven't received permission from the user to badge the application错误解决办法
  • 原文地址:https://www.cnblogs.com/lci05/p/3646289.html
Copyright © 2011-2022 走看看