lr-web services协议
1、web services协议简介
web services协议是建立可交互操作的分布式应用程序的新平台,它通过一系列标准和协议来保证程序之间的动态链接,其中最基本的协议包括soap,wsdl,uddi。
2、若开发只给了一个webservices的url,未提供报文请求格式,要怎么操作?http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
用soap ui工具可获得
1)新建soap项目,命名且输入wsdl url,点击ok即可;

2)可查看到该url下的所有接口,双击你要查看的接口名,就可以在右边窗口查看到响应的请求报文;

3、loadrunner操作
创建web services脚本,以获取天气预报服务为例;http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
a、此次运用了三个模式来创建脚本请求:web_service_call、soap_request、web_custom_request
b、请求中带中文,不转码导致得到的响应非所期望的,此时需要转码,如下:
lr_convert_string_encoding("深圳",NULL,"utf-8","cityname");
lr_save_string(lr_eval_string("{cityname}"),"cityname");
c、响应中由于有中文显示出为乱码,转码如下:
lr_convert_string_encoding(lr_eval_string("{response}"),"utf-8",NULL,"msg");
d、若响应时一个xml,可用lr_xml_get_values()
例:lr_xml_get_values("XML={response}",
"Query=/Envelope/Body/getWeatherbyCityNameResponse/getWeatherbyCityNameResult/string[2]",
"ValueParam=getcityname",
LAST);
web_service_call模式:
1)在SOA Tools中选中Manage Services

2)导入url地址

3)直接点击ok

4)在SOA Tools里点击add service call

5)选择好服务名、接口和soap,再填写输入参数

6)填写输出参数名

点击ok后,在loadrunner里生成了web_service_call请求;

对脚本请求做修改,添加事物、if判断,脚本如下:
Action()
{
lr_start_transaction("获取天气预报城市名");
web_service_call( "StepName=getWeatherbyCityName_101",//步骤名称
"SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getWeatherbyCityName",//服务名称 soap 获取那个接口 (城市天气预报)
"ResponseParam=response",//返回的参数信息
"Service=WeatherWebService",//webservice的服务
"ExpectedResponse=SoapResult",//请求的返回
"Snapshot=t1555823842.inf",//快照
BEGIN_ARGUMENTS,//输入参数 开始
"theCityName={cityname}",//请求输入,城市=深圳或者其它城市名称
END_ARGUMENTS,//结束参数
BEGIN_RESULT,//返回值的开始
"getWeatherbyCityNameResult/*[2]=Param_string",//返回参数保存在Param_string
END_RESULT,//返回值 的结束
LAST);
if (strcmp(lr_eval_string("{Param_string}"),lr_eval_string("{cityname}"))==0)
{
lr_end_transaction("获取天气预报城市名", LR_PASS);
}
else
{
lr_end_transaction("获取天气预报城市名", LR_FAIL);
}
return 0;
}
soap request模式:
1)在SOA Tools下选中import SOAP;

2)选中soap的xml文件,根据例子,填写好url和soap actions;


3)点击ok,生成一个soap_request请求在脚本里;

4)修改脚本,添加if判断,脚本如下:
Action()
{
lr_convert_string_encoding(lr_eval_string("{getcity}"),NULL,"utf-8","cityname");
lr_save_string(lr_eval_string("{cityname}"),"cityname1");
lr_start_transaction("获取城市天气预报");
soap_request("StepName=SOAP Request", //步骤名称
"URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",//请求的url地址
"SOAPEnvelope="//发送到服务器的xml包
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body>"
"<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
"<theCityName>{cityname1}</theCityName>"
"</getWeatherbyCityName>"
"</soap:Body>"
"</soap:Envelope>",
"SOAPAction=http://WebXml.com.cn/getWeatherbyCityName",
"ResponseParam=response", //存储服务器 响应的输出参数名称
"Snapshot=t1555845699.inf",
LAST);
//lr_convert_string_encoding(lr_eval_string("{response}"),"utf-8",NULL,"msg");
//lr_output_message("msg结果:%s",lr_eval_string("{msg}"));
lr_xml_get_values("XML={response}",
"Query=/Envelope/Body/getWeatherbyCityNameResponse/getWeatherbyCityNameResult/string[2]",
"ValueParam=getcityname",
LAST);
if (strcmp(lr_eval_string("{getcityname}"),lr_eval_string("{getcity}"))==0)
{
lr_end_transaction("获取城市天气预报", LR_PASS);
lr_output_message("获取指定城市天气成功");
}
else
{
lr_end_transaction("获取城市天气预报", LR_FAIL);
lr_output_message("获取指定城市天气失败");
}
return 0;
}
web_custom_request模式:
1)此模式较简单,与http协议post请求方法一致:
2)脚本Action()
{
lr_convert_string_encoding(lr_eval_string("{getcity}"),NULL,"utf-8","cityname0");
lr_save_string(lr_eval_string("{cityname0}"),"cityname1");
web_reg_save_param_ex(
"ParamName=recityname",
"LB=<string>",
"RB=</string>",
"Ordinal=ALL",
SEARCH_FILTERS,
LAST);
lr_start_transaction("获取城市天气预报");
web_custom_request("web_custom_request",
"URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",
"Method=POST",
"TargetFrame=",
"Resource=0",
"Referer=",
"Mode=HTTP",
"EncType=text/xml; charset=utf-8",
"Body=<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body>"
"<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
"<theCityName>{cityname1}</theCityName>"
"</getWeatherbyCityName>"
"</soap:Body>"
"</soap:Envelope>",
LAST);
lr_convert_string_encoding(lr_eval_string("{recityname_2}"),"utf-8",NULL,"recityname_2");
lr_save_string(lr_eval_string("{recityname_2}"),"recityname");
if (strcmp(lr_eval_string("{recityname}"),lr_eval_string("{cityname}"))==0)
{
lr_end_transaction("获取城市天气预报", LR_PASS);
lr_output_message("获取城市天气预报成功");
}
else
{
lr_end_transaction("获取城市天气预报", LR_PASS);
lr_error_message("获取城市天气预报失败");
}
return 0;
}
lr-web services协议的更多相关文章
- 使用LoadRunner对Web Services进行调用--Import Soap
利用LoadRunner对Web Services进行测试时,通常有三种可供采用的方法: 在LoadRunner的Web Services虚拟用户协议中,[Add Service Call] 在Loa ...
- loadrunner:web services接口测试
本文以实例讲解web services接口测试操作,内容包括:脚本生成.参数化和接口与接口间的取值关联操作. 网站"http://www.webxml.com.cn/zh_cn/web_se ...
- 分分钟带你玩转 Web Services
当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...
- 【整理】动态加载Web Services
WebClient client = new WebClient(); String url = "http://localhost/MESAPIWebService/MESAPI.asmx ...
- RESTful Web Services初探
RESTful Web Services初探 作者:杜刚 近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTf ...
- 使用 Spring 3 来创建 RESTful Web Services
来源于:https://www.ibm.com/developerworks/cn/web/wa-spring3webserv/ 在 Java™ 中,您可以使用以下几种方法来创建 RESTful We ...
- (转) Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?
Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么? 建站有很多技术,如 HTML.HTML5.XHT ...
- Web Services 中XML、SOAP和WSDL的一些必要知识
Web Services 是由xml来定义数据格式的,通过SOAP协议在各个系统平台中传输,那么接下来讨论下SOAP和WSDL的各自作用. SOAP和WSDL对Web Service.WCF进行深入了 ...
- 跟我一起学WCF(3)——利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...
随机推荐
- 原生JS动态添加和删除类
原生JS动态添加和删除类 由于需要, 给按钮组监听点击事件(要求用事件委托),当有一个按钮被点击时,相应的给该按钮添加一个类(激活类),其他没有点击的按钮就要移出该类 添加和和删除类有三种方法 首先等 ...
- Gradle构建多模块项目
通常我在使用Maven构建项目的时候是将应用项目划分为多个更小的模块. Gradle 项目也拥有多于一个组件,我们也将其称之为多项目构建(multi-project build). 我们首先创建一个多 ...
- [C++ Primer Plus] 第10章、对象和类(一)程序清单——辨析三个const
程序清单10.1+10.2+10.3 头文件stock.h #ifndef STOCK00_H_ //先测试x是否被宏定义过 #define STOCK00_H_ //如果没有宏定义,就宏定义x并编译 ...
- word模板导出的几种方式:第二种:C#通过模板导出Word(文字,表格,图片) 占位符替换
原文出处:https://www.cnblogs.com/ilefei/p/3508463.html 一:模板的创建 (注意文件后缀只能是.docx或.doct) 在需要位置 插入-文档部件-域, ...
- ipv4网络无访问权限
昨天折腾了一天这个网络受限问题,都没有得到解决,驱动精灵.电脑管家(我不用360).重置Winsock目录.网络重置.组策略控制台.重启路由器(学校的以太网,工作时间不好重置路由器)都用了个遍,一直都 ...
- JS(JavaScript)的进一步了解5(更新中···)
1.针对表单的 form input select textarea type=”radio/checkbox/password/button/text/submit/reset/” 表单的事件 on ...
- kali虚拟机添加共享文件夹
1.保证安装了vmtools 2.在虚拟机本身设置共享文件夹,如图 其中选的这个文件夹就是宿主机里待共享的文件夹. 3,在kali里启用它: vmhgfs-fuse .host:[宿主机文件夹] /m ...
- Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
问题:创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work. # docker run -it -p 3000 ...
- Git复习步骤
1.首先肯定是安装与配置了 首先要下载Git,然后设置用户名/邮箱 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c ...
- HttpClient MultipartEntityBuilder 上传文件
文章转载自: http://blog.csdn.net/yan8024/article/details/46531901 http://www.51testing.com/html/56/n-3707 ...