User-agent的使用

上一篇 / 下一篇  2017-05-23 23:07:07 / 个人分类:工具

今天在对某报表系统进行测 试时,遇到一个问题,即执行查询操作时,录制的脚本回放时,前台不报错,但应用后台日志有错误信息。
该报表系统使用的chinaExcel这个报表工具,由于该工具使用率并不大,因此上网未能找到相关的信息。
具体情况如下:
一、录制的方法体为: 
web_custom_request("component.do_10”, 
        "URL=http://XXX.XXX.XXX.XXX:XXXX/component.do?name=cmp_report_status&event=getDeptSuperior&para=“, 
        "Method=POST”,
         "Resource=0”, 
        "RecContentType=text/html”, 
        "Referer=",
         "Snapshot=t128.inf",
         "Mode=HTTP",
         "EncType=", 
        "Body=<msginfo><parameters><parameter name=\"rpt_id\">op_apply_add_tmii</parameter><parameter name=\"dept_id\">XXXXX</parameter><parameter name=\"rpt_month\">XXXX</parameter></parameters></msginfo>", 
        LAST);

二、理论应该返回的内容为:
HTTP/1.1 200 OK
Date: Tue, 23 May 2017 00:49:55 GMT
Content-Length: 395
Content-Type: text/html; charset=utf-8
X-Powered-By: Servlet/2.5 JSP/2.1

<datacenter>
<variables>
   <variable name="dept_id_s">XXXXX</variable>
   <variable name="dept_name_s">XXXXXXXX</variable>
</variables>
<rowsets><rowset next="false" name="epm/report/PUB_DEPT_SUPERIOR" label="PUB_DEPT_SUPERIOR" procedure=""><row num="1"><DEPT_ID>XXXXX</DEPT_ID><DEPT_NAME>
XXXXXXXXXXXX</DEPT_NAME></row>
</rowset></rowsets></datacenter>

三、实际返回的报错信息为:

-23 11:10:37,710 ERROR [[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'] epm.module.rpt.RptUtil (RptUtil.ja va:176) - 查询失败
ArrayIndexOutOfBoundsException: Array index out of range: 0
    
  

四、解决思路及办法:
1、在考虑方法体中的参数后,未发现错误;
2、检查LR的浏 览器设置,未发现异常;
3、查阅ChinaExcel该报表工具的特性,以及相关的如ActiveX异步回调等资料;
4、检查发送HTTP请求的完整包内容,包括表头,表主体,发现表头中的user-agent默认设置是User–Agent: Mozilla/4.0
但是比对录制时,发出的请求的完整内容,发现发送的请求的User-Agent是:Microsoft-XMLHTTP;
因此修改web_custom_request请求,修改后为:

web_custom_request("component.do_10”, 
        "URL=http://XXX.XXX.XXX.XXX:XXXX/component.do?name=cmp_report_status&event=getDeptSuperior&para=“, 
        "Method=POST”,
        "UserAgent=Microsoft-XMLHTTP",
         "Resource=0”, 
        "RecContentType=text/html”, 
        "Referer=",
         "Snapshot=t128.inf",
         "Mode=HTTP",
         "EncType=", 
        "Body=<msginfo><parameters><parameter name=\"rpt_id\">op_apply_add_tmii</parameter><parameter name=\"dept_id\">XXXXX</parameter><parameter name=\"rpt_month\">XXXX</parameter></parameters></msginfo>", 
        LAST);

再次测 试,不再报错,问题解决!

下面附上网络上查询到关于user-Agent的信息

 User Agent:用户代理,它是一个HTTP头的名字,用来标识应用程序,通常是浏 览 器,它呈现的是用户和服务器的交互。

例如:头信息“User-Agent: Mozilla/4.0 (compatible; MS IE 6.0; Win d ow s NT 5.0)”识别的是Window NT下的IE浏 览 器6.0。其他的User-Agent的值用来描述其他的浏览 器,或者非浏览 器程序。通常,一个应用程序中所有的请求都使用相同的用户代理,录制者作为一个运行时参数来指定(Run-Time Setting—Browser Emulation—User Agent)。不管怎么说,即使是在一个简单的浏 览 器进程中,仍有可能会用到直接与服务器交互的非浏 览器组件(例如ActiveX控件),通常他们有着不同于浏 览器的用户代理属性。指定“UserAgent”表示这是一个非浏 览 器的请求。指定的字符串被HTTP头“User-Agent:” 使用,在某些情况下,它同时会影响回放脚本时的行为。例如,不使用浏 览器缓存,假设指定的URL属于资源等等。

LR本身不检查指定的字符串与浏览 器本身的值是否相同。

关于UserAgent参数在web_custom_request中有详细的说明。





TAG:

 

评分:0

我来说两句

日历

« 2024-04-14  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 12011
  • 日志数: 4
  • 文件数: 1
  • 建立时间: 2017-03-08
  • 更新时间: 2018-09-21

RSS订阅

Open Toolbar