loadrunner Web_类函数之web_custom_request()

web_custom_request()--常用函数

允许您使用HTTP支持的任何方法创建自定义HTTP请求。

该函数与web_submit_data()函数相比优点在于body参数部分可以是不固定动态参数数据信息,可以动态添加多个ENDITEM参数值。

int web_custom_request( const char *RequestName,<List of Attributes>,
[EXTRARES, <List of Resource Attributes>,] LAST ); 

 

参数说明:

Object:一个表达式,求值到类型为WebApi的对象。通常是webfor Java和Visual Basic。另请参见函数和常量前缀。

RequestName:步骤的名称,如图形脚本中所示。

List ofAttributes:属性列表请参阅属性。注意:属性名称区分大小写(方法与方法)。

EXTRARES:一个分界参数,指示下一个参数将是资源属性列表。

List of Resource Attributes: Listof Resource Attributes

 LAST:指示字段列表结束的标记。

 

一般信息:

web_custom_request函数是一个操作函数,允许您使用任何方法或主体创建自定义HTTP请求。默认情况下,VuGen仅为无法使用其他Web功能解释的请求生成此函数。

要手动插入此功能,请使用“添加步骤”对话框。要指定要在自定义请求之前发送的HTTP标头,请添加web_add_header或web_add_auto_header函数。

仅当执行基于HTML的记录时插入额外资源属性,并且在当前脚本步骤中将“非HTML生成元素”高级记录选项设置为记录。这是默认设置。有关详细信息,请参阅“HP LoadRunner虚拟用户生成器用户指南”。

所有Web脚本以及以HTTP或无线会话协议(WSP)重放模式运行的WAP脚本支持此功能。

 

属性:

URL - 要加载的网页的URL(统一资源定位符)。

Method - 表单提交方法:POST或GET。

TargetFrame - 包含当前链接或资源的帧的名称。点击这里了解更多信息。

EncType - 使用的编码方法的类型

EncType指定要指定为当前重放的“Content-Type”REQUEST标题的值的Content-Type,例如“text /html”。 web_custom_request不执行正文编码。 Body参数指定要使用的主体(或在应用“二进制”处理之后),其中已经应用了任何编码。因此,指定与主体不匹配的EncType可能会导致服务器端错误。一般来说,建议您不要将EncType编辑为已记录。

任何EncType规范以静默方式覆盖Content-Type的任何web_add_[auto_]标题。如果指定“EncType =”(空值),则不会生成“Content-Type”请求标头。如果省略“EncType”,则使用任何适用的web_add_ [auto_]标题。如果没有标题和“Method = POST”,“application / x-www-form-urlencoded”被用作默认值。否则,不生成Content-Type请求头。

RecContentType - 记录期间RESPONSE标头的内容类型,例如,text/ html,application / x-javascript。它被读取以确定目标URL是否是可记录资源。点击这里了解更多信息。

RecContentType指定记录的“Content-Type”RESPONSE标头值。当未指定资源以确定目标URL是否是资源时,将使用RecContentType值。

Referer - 引用网页。点击这里了解详情。

Body - 请求的正文。有关可用选项的完整列表,请参阅Body Attribute(主体属性部分)。有关在Body属性中使用二进制代码的信息,请参阅Using Binary Code(使用二进制代码)。

Raw Body - 请求的主体作为指向数据的指针传递。请参见Raw Body Attribute(原始属性部分)。

BodyFilePath - 要作为请求的主体传递的文件的路径。 BodyFilePath不能与Body或任何Body, or any Body Attribute or Raw Body Attribute:BodyBinary,BodyUnicode,RAW_BODY_START或Binary = 1。

Resource - 指示URL是否为资源的值:

“Resource = 1”表示URL是一个资源,这意味着它对于脚本的成功并不重要。任何下载资源的失败都将被视为警告而不是错误

是否下载是否受“下载非HTML资源”运行时设置的影响

响应不会解析为HTML

“Resource = 0”表示URL是关键的,不受RTS影响,如果需要,将被解析。

ResourceByteLimit- 请参阅ResourceByteLimit部分。

Snapshot - 用于关联的快照文件的文件名(inf扩展名)。

Mode - 录制级别:HTML或HTTP。点击这里了解更多信息。

ExtraResBaseDir -解析EXTRARES组内相对URL的基本URL。

UserAgent - “User-Agent”是标识应用程序的HTTP标头的名称,通常是浏览器,代表与服务器交互的用户。

例如,标题“User-Agent:Mozilla /4.0(compatible; MSIE 6.0; Windows NT 5.0)”标识用于Windows NT的MicrosoftInternet Explorer 6.0。其他用户代理字符串用于不同的浏览器和其他非浏览器应用程序。通常,来自应用程序的所有请求使用相同的User-Agent值,记录器将其指定为运行时设置。然而,即使在常规的浏览器会话中,也可能存在直接与服务器交互的非浏览器组件(例如,Active-X),并且通常具有与浏览器不同的User-Agent字符串。指定UserAgent表示这是非浏览器请求。指定的字符串在“User-Agent:”HTTP标头中使用,并且在某些方面影响Replay的行为,例如,通过不使用浏览器缓存,假设指定的URL是资源等。

不进行检查以验证指定的值是否不同于浏览器的值。

 

Binary

“Binary = 1”指定形式为\\ x ##,其中“##”是两个“十六进制数字”(0-9,a-f或A-F)的正文中的每个序列,字节包含指定的十六进制值。

如果“Binary = 0”(默认值),这样的序列按字面传递。

注意,使用两个反斜杠。它们被C解释器解释为一个反斜杠。当不需要零字节时,可以使用一个反斜杠而不使用“Binary = 1”(例如,\ x20而不是\\ x20)。当需要零字节IS时,指定\ x00将导致字符串被逻辑截断(空终止符),并且\\ x00需要使用“Binary = 1”指定。

 

ContentEncoding

请求通过使用指定方法(即gzip或deflate)编码(例如,压缩)请求主体,以及相应的“Content-Encoding:”HTTP头与请求一起发送。这适用于web_custom_request和web_submit_data。

 

示例:web_custom_request

在以下记录的脚本中,用户从http://lazarus/html/forms/file.html开始记录。当用户提交他的请求时,VuGen插入了一个web_add_header函数,然后是一个web_custom_request函数。

web_url(“file.html”,“URL = http://lazarus/html/forms/file.html”,

    “TargetFrame= _TOP”,LAST);

 

web_add_header(“Content-Type”,

“multipart /form-data; boundary = --------------------------- 292742461228954”);

 

web_custom_request(“post_query.exe”,“Method =POST”,

    “URL = http://lazarus/cgi-bin/post_query.exe”,

    “Body =----------------------------- 292742461228954 \ r \ n Content-Disp”

    “osition:form-data;name = \”entry \“\ r \ n \ r \ nText \ r \ n ----------”

    “-------------------292742461228954 \ r \ n内容 - 处置:f”

    “-----------292742461228954 - \ r \ n”,

    “TargetFrame=”,

LAST);

 

RecContentType

记录的资源类型。 此属性包含有关主资源和辅助资源的信息。 最常用的主要类型是文本,应用程序和图像。 辅助类型根据资源而异。 例如,“RecContentType= text / html”表示导航到HTML文本。“RecContentType = application / msword”表示使用MS Word应用程序。

请注意,当设置资源属性参数时,将忽略此参数。 Resource参数是Action函数的另一个可用属性。

Resource Attribute

如果“资源”设置为0,则在重放期间始终会下载URL。

如果“资源”设置为1,则仅当选中下载非HTML资源选项(请参阅运行时设置>浏览器仿真选项卡)时才会下载URL。

Body Attribute

请求的主体作为属性参数Body,BodyBinary或BodyUnicode的值传递,具体取决于内容。主体可以是单个参数,也可以划分为多个主体段,即一系列参数。例如,以下对web_custom_request的调用将正文分为三个段:一个unicode段,后跟一个二进制段,后跟常规文本。最终的主体是所有三个部分以与传递给函数的顺序相同的顺序连接在一起的结果。

web_custom_request(

                    ......

                    “BodyUnicode= REPRICE”

                    “BodyBinary =\\ x08 \\ x00 \\ xCC \\ x02 \\ x00 \\ x00”

                    “Body =。\ r \ n”

                   “-dxjjtbw /(.tp?eg:ch / 6 - \ r\ n”,

                   持续);

 

不推荐使用的web_custom_request参数Binary也可以用于表示二进制主体,但仅当将一个Body段传递给函数时。

所有正文值都是ASCII,以null结尾的字符串。

正文 - 表示正常,可打印的文本。无法表示空字节(除了见下面的注释)。所有字符都使用反斜杠指定。

注意:在较早的脚本中,您可能会看到以十六进制代码(例如,“\\ x5c”)在Body参数中编码的不可打印字符,在这种情况下,还必须将“Binary = 1”作为参数传递。 NULL字节可以以这种方式表示(“\\ 00”)。相比之下,较新的脚本将主体分为多个主体段,例如“Body = ...”,“BodyBinary = ...”,Body = ...“。

BodyBinary - 表示二进制代码。不可打印字符以十六进制编码,格式为\\ xHH,其中HH指定十六进制值。 NULL字节由“\\ 00”指定

BodyUnicode - 美国英语,特别是Latin1UTF-16LE(小端)仅Unicode。实际参数被去除额外的零字节,附加每个字符以使得更容易阅读文本。在发送到Web服务器之前,它由web_custom_request重新附加。

对于不可打印的字符,使用单个反斜杠。无法表示空字节。

注意:对于长度超过100K的实体,将显示变量名称,而不是属性。变量在lrw_custom_body.h中定义。

Using Binary Code

您可以使用以下格式将二进制代码包含在web_custom_request函数的Body参数中:

\ x [char1][char2]

这表示由[char1] [char2]表示的十六进制值。

例如:\ x24是16 * 2 + 4 =36,这是一个$符号; \ x2B是+号。

不表示有效的2字符十六进制序列的序列由VuGen作为ASCII文本处理。不要使用1个字符的十六进制序列。例如,“\ x2”不是有效的2字符十六进制序列。使用“\ x02”。

注意,二进制值在脚本中显示为\\ x,即“x”前面有两个反斜杠。这是由于C语言逃避法律。但是,使用VuGen生成web_custom_request函数时,只需要键入一个反斜杠。

如果在web_custom_request函数中使用参数化,则在参数的定义中只包含一个反斜杠。这是因为参数替换不执行任何C转义转换。

可以修改HTTP头以将关于请求的附加信息传递到服务器。使用HTTP标头,您可以(例如)允许响应中的其他内容类型(例如压缩文件),或者您只能在特定条件下请求网页。要修改请求中的HTTP头,请参阅web_add_header。要修改所有后续请求,请参阅web_add_auto_header。

 

Raw Body Attribute

二进制内容可以在请求中使用BodyBinary属性发送(或者当还指定了“Binary= 1”时,也可以是Body属性)。但是,此方法要求使用不可打印文本的转义反斜杠将内容转换为ASCII文本。

为了实现原始数据的更简单的表示,“原始实体”属性允许您传递指向二进制内容的指针。

发送原始内容的语法是web_custom_request()的一组4个参数。它们必须按以下顺序显示:

正确的顺序是:

RAW_BODY_START,

指向数据缓冲器的指针,

(int)length,

RAW_BODY_END

语法如下例所示:

char *abc= .../*a pointer to the raw data */

web_custom_request("StepName",

     "URL=http://some.url ",

     "Method=POST",

     RAW_BODY_START,

     "abc",

     3,

     RAW_BODY_END,

     LAST);

指针数据缓冲区不能为NULL,即使长度为0。

原始Body组不能与二进制参数集(“Binary= 1”)一起使用。

无法对数据缓冲区进行参数化。也就是说,数据缓冲器中的任何参数引用(例如,“{MyParam}”)将不会被相应的参数值代替,并且将被原样使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值