loadrunner Web_类函数之web_service_call()

来源:互联网 发布:电视直播软件pc版 编辑:程序博客网 时间:2024/06/11 02:34

web_service_call()--常用函数

调用Web服务。该函数是专门针对于Webservice协议来提供一个调用功能,webservice是基于一个XML为基础的网络API的一个接口,loadrunner使用web_service_call来进行调用的。

intweb_service_call(const char * StepName,[URL,] ExpectedResponse,<List of specifications>,[BEGIN_ARGUMENTS,Arguments,END_ARGUMENTS,] [SendAttachments,] [BEGIN_RESULT,Results,END_RESULT,] [Receive Attachments,] LAST);

 

 参数说明:

 StepName:步骤的名称,它显示在测试树中。可以使用任何文本。

ExpectedResponse:要接受的响应的类型。请参阅ExpectedResponse。

URL:要加载的Web服务的URL(统一资源定位符)。

List ofspecifications:规范列表格式为“Specification = value”的逗号分隔列表。有关列表,请参阅规格。

BEGIN_ARGUMENTS:指示“ARGUMENTS”部分开头的标记。

Arguments:参数ArgumentName =值。可以是WSDL中指定的参数名称及其分配值,也可以是User Handler Arguments之一。

END_ARGUMENTS:指示“ARGUMENTS”部分结束的标记。

Send Attachments :发送附件要发送的附件。有关详细信息,请参阅附件规格。

BEGIN_RESULT:指示RESULT部分开始的标记。

Results :结果ResultName = ParamName。在WSDL中指定的result参数或返回值的名称,以及用于存储结果的参数的名称。

END_RESULT:指示RESULT部分结束的标记。

Receive Attachments:接收附件接收时保存的预期附件。有关详细信息,请参阅附件规格。

LAST指示参数列表结束的标记。

 

web_service_call函数调用Web服务。

使用Web Service Vuser中的导入WSDL向导时会生成此函数。当您导入WSDL文档时,默认情况下会生成web_service_call函数。

这是一个高级功能,可以让您直观地修改所有SOAP参数。因为编辑参数可能是容易出错的,所以建议在服务测试的树视图中修改函数,而不是在脚本编辑器中修改。

默认情况下,URL端点取自WSDL文件。使用URL参数覆盖(或参数化)Web Service终端节点。

 

ExpectedResponse

预期响应为以下之一:

 Value  Effect :

“ExpectedResponse =SoapResult”:接受SOAP输出响应,并在SOAP故障上失败。

“ExpectedResponse =SoapFault”:接受SOAP故障,并在SOAP输出响应上失败。

“ExpectedResponse =AnySoap”:接受SOAP输出和SOAP故障响应。

 

Specifications (产品规格):

SOAPMethod:要调用的WebService方法,包括服务名称,端口名称和方法名称。 SOAPMethod无法参数化。

 

元素由句点分隔。例如:

SOAPMethod =RPCEncodedEchoService | RPCEncodedEchoServiceSoap | EchoStructContainingArray

RPCEncodedEchoService是服务名称。

RPCEncodedEchoServiceSoap是端口名称。

EchoStructContainingArray是方法名称。

SOAPHeader:XML格式的可选自定义SOAP标头。标题包含在SoapHeader标记中。例如:

“SOAPHeader =<SoapHeader> <element1>一些文本</element1> <element2>一些文本</ element2> <element3>一些文本</element3> </ SoapHeader>

 

Service:在WSDL中定义的服务的名称。

WSDL:WSDL文档的位置。无法对WSDL及其参数进行参数化。

Snapshot:包含步骤快照的.inf文件的名称。此参数由服务测试记录。手动输入步骤时,不要添加。如果记录,不要编辑它。

ResponseParam:存储服务器响应的输出参数的名称。

RecordedBuffer:在记录期间创建的包含发送消息的缓冲区。不要编辑此参数或手动输入。

ClientEmulation:此参数采用工具包(DotNet或Axis)的名称或记录的关键字,这意味着将记录的缓冲区将被重放。 ClientEmulation是可选的。如果存在,它将覆盖运行时设置。

SOAPAction:在WSDL中指定的HTTP头。从LoadRunner版本8.0,这是由服务测试记录。仍然支持使用手动输入的值的旧脚本。

UseWSDLCopy:此可选参数确定在测试运行期间是否读取全局WSDL或本地副本。如果值为1,则使用本地副本。如果值为0,则使用全局WSDL。默认是读取全局WSDL。

AsyncEvent:在随后调用web_service_wait_for_event时要使用的事件的名称。如果web_service_call调用包含非空的AsyncEvent参数,则调用发送请求,测试运行立即继续,而不等待响应。继续运行,直到调用web_service_wait_for_event。此参数是可选的。

WSAAction:要在目标服务器上执行的操作。

WSAReplyTo:使用WS-Addressing发送响应的IP地址。该值通常是负载生成器的文本IP地址。当指定“WSAReplyTo = autodetect”时,将在运行时检测负载生成器的IP。 Autodetect要求服务可以使用DNS将负载生成器的主机名转换为IP。 .NET和Axis工具包支持WS-Addressing。此参数是可选的。

JMSSendQueueName:发送队列的JNDI名称。它指向可以通过JNDI查找操作找到的队列名称。使用JMS传输时,此值不能为空。如果不使用JMS传输,则不传递此参数。

JMSReceiveQueueName:使用JMS传输时接收队列的JNDI名称。它指向可以通过JNDI查找操作找到的队列名称。如果此值缺失或为空,将使用临时队列进行接收。如果不使用JMS传输,则不传递此参数。

 

User Handler Arguments(用户处理程序参数):

UserHandlerFunction:脚本中定义的函数的名称。

UserHandlerName:用户处理程序的名称和在脚本外部定义的处理程序的DLL。如果指定在脚本中定义为UserHandlerFunction的处理函数,那么将忽略UserHandlerName。

UserHandlerArgs:处理程序的配置参数的列表。使用处理程序的GetArguments方法来检索处理程序中的参数。

UserHandlerOrder:请求中处理用户处理程序的顺序。 BeforeSecurity,AfterSecurity,AfterAttachments或ReplaceTransport之一。

有关用户处理程序的详细信息,请参阅“HPLoadRunner虚拟用户生成器用户指南”中的“自定义Web服务脚本行为”。

 

 

Example: web_service_call

在第一个示例中,web_service_call函数调用Web服务GetUKLocationByTown来定位地图上的位置。

#include"as_web.h"

web_service_call( "StepName=UkLocation",

    "ExpectedResponse=AnySoap",

    "URL=http://www.locatorx.net/uklocation.asmx",

    "SOAPMethod=TownService|TownServiceSoap|GetUKLocationByTown",

    "SOAPMethodNamespace=http://www.locatorX.NET",

    "SOAPMethodStyle=document",

    "SOAPAction=http://www.locatorX.NET/GetUKLocationByTown",

    "WSDL=http://www.locatorx.net/uklocation.asmx?WSDL",

    "SOAPHeader=<SoapHeader><e>jb14</e></SoapHeader>",

    "Snapshot=t1.inf",

    BEGIN_ARGUMENTS,

        "Town=London",

    END_ARGUMENTS,

    BEGIN_RESULT,

        "GetUKLocationByTownResult=Result",

    END_RESULT,

    LAST );

在第二个示例中,web_service_call函数执行DIME上传和下载。lr_save_string("Some content for anattachment in a Parameter",
    "pAttachmentContent" );

// DIME encoded upload

web_service_call("StepName=DimeUploadFile_102",

    "ExpectedResponse=AnySoap",

    "SOAPMethod=MyDimeService|MyDimeServiceSoap|DimeUploadFile",

    "SOAPHeader=<SoapHeader><e>jb14</e></SoapHeader>",

    "WSDL=http://myServer/DimeGen/MyDimeService.asmx?WSDL",

    "UseWSDLCopy=1",

    "Snapshot=t1124018494.inf",

    BEGIN_ARGUMENTS,

    "file_name=d:\\temp\\myUploaded.txt",

    END_ARGUMENTS,

    ATTACHMENTS_FORMAT_DIME,

    ATTACHMENT_ADD,
    "FiLeNaMe=d:/temp/attachment.in",//"ContentType=text/plain",

    BEGIN_RESULT,

    END_RESULT,

    LAST );

// DIME encoded download

web_service_call("StepName=DimeDownloadFile_102",

"SOAPMethod=MyDimeService|MyDimeServiceSoap|DimeDownloadFile",

    "ExpectedResponse=AnySoap",

    "WSDL=http://myServer/DimeGen/MyDimeService.asmx?WSDL",

    "UseWSDLCopy=1",

    "Snapshot=t1124022373.inf",

    BEGIN_ARGUMENTS,

    "file_name=d:\\temp\\myUploaded.txt",

    END_ARGUMENTS,

    BEGIN_RESULT,

    END_RESULT,

    ATTACHMENT_SAVE_ALL,

    "pAraMnAmepReFiX=pAttachmentContent",

    LAST );

在第三个示例中,使用WSAReplyTo参数指定的WS-Addressing将服务器答复定向到主机。 在第一次调用中,指定了WSAAction。 这两个调用都是异步的,如AsyncEvent参数所示。 测试运行继续,直到下面的web_service_wait_for_event调用。

web_service_call( "StepName=echo_101",

    "ExpectedResponse=AnySoap",

    "SOAPMethod=MyService|MyServiceSOAP12port0|echo",

    "SOAPHeader=<SoapHeader><e>jb14</e></SoapHeader>",

    "ResponseParam=response",

    "Service=MyService",

    "Snapshot=t1156241380.inf",

    "WSAReplyTo=111.111.111.011",

    "WSAAction=http://example1.org/MyServiceSOAP12port0/echo",

    "AsyncEvent=event1",

    BEGIN_ARGUMENTS,

    "xml:part1=<part1><EchoInput>true</EchoInput><Latency>4</Latency></part1>",

    END_ARGUMENTS,

    BEGIN_RESULT,

    "part1/EchoOutput=Param_EchoOutput1",

    END_RESULT,

    LAST );

web_service_call("StepName=echo_101",

    "SOAPMethod=MyService|MyServiceSOAP12port0|echo",

    "ResponseParam=response",

    "Service=MyService",

    "Snapshot=t1156241380.inf",

    "WSAReplyTo=111.111.111.011",

    "AsyncEvent=event2",

    BEGIN_ARGUMENTS,

"xml:part1=<part1><EchoInput>false</EchoInput><Latency>1</Latency></part1>",

    END_ARGUMENTS,

    BEGIN_RESULT,

    "part1/EchoOutput=Param_EchoOutput2",

    END_RESULT,

    LAST );

web_service_wait_for_event("Quantifier=ALL","Timeout=11111",BEGIN_EVENTS,"event1","event2",END_EVENTS,LAST); 

原创粉丝点击