以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

一、web_service_call模式

步骤如下:

经过增加事务和if 判断的脚本如下:

  1. Action()
  2. {
  3.  
  4. lr_start_transaction("获取天气预报");
  5.  
  6. web_service_call(
  7. "StepName=getWeatherbyCityName_102",
  8. "SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getWeatherbyCityName", //服务名称|soap|获取哪个接口(城市天气预报)
  9. "ResponseParam=response", //返回的参数信息
  10. "Service=WeatherWebService", // webservice的服务
  11. "ExpectedResponse=SoapResult", //请求的返回
  12. "Snapshot=t1555506477.inf",
  13. BEGIN_ARGUMENTS, //输入参数开始
  14. "theCityName={NewParam}", //请求输入
  15. END_ARGUMENTS, //结束参数
  16. BEGIN_RESULT, //返回值得开始
  17. "getWeatherbyCityNameResult/*[2]=Param_string", //返回的参数保存在Param_string
  18. END_RESULT, //返回值结束
  19. LAST);
  20.  
  21. if(strcmp(lr_eval_string("{NewParam}"),lr_eval_string("{Param_string}"))==){
  22. lr_end_transaction("获取天气预报", LR_PASS);
  23. }else{
  24. lr_end_transaction("获取天气预报", LR_FAIL);
  25. }
  26.  
  27. return ;
  28.  
  29. }

二、soap_request模式 (外加查看请求报文的小插曲)

当开发只给你一个地址时,我们可以使用 soap UI 工具查看 步骤如下:

lr12 操作步骤如下:

根据城市名获取天气预报的接口文档地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getSupportCity

脚本加上改造之后的如下:

  1. Action()
  2. {
  3. lr_convert_string_encoding(lr_eval_string("{city_name}"),NULL,"utf-8","city");
  4. lr_save_string(lr_eval_string("{city}"),"cityName");
  5. // lr_think_time(10);
  6. lr_start_transaction("获取天气预报");
  7.  
  8. soap_request("StepName=SOAP Request",
  9. "URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",
  10. "SOAPEnvelope="
  11. "<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/\">"
  12. "<soap:Body>"
  13. "<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
  14. "<theCityName>{cityName}</theCityName>"
  15. "</getWeatherbyCityName>"
  16. "</soap:Body>"
  17. "</soap:Envelope>",
  18. "SOAPAction=http://WebXml.com.cn/getWeatherbyCityName",
  19. "ResponseParam=response",
  20. "Snapshot=t1555573201.inf",
  21. LAST);
  22.  
  23. lr_xml_get_values("XML={response}",
  24. "Query=/Envelope/Body/getWeatherbyCityNameResponse/getWeatherbyCityNameResult/string[2]",
  25. "ValueParam=responseValue",
  26. LAST);
  27. lr_output_message("返回城市名称:%s",lr_eval_string("{responseValue}"));
  28. if(strcmp(lr_eval_string("{responseValue}"),lr_eval_string("{city_name}"))==){ //响应的参数 与参数化转码之前的参数对比
  29. lr_end_transaction("获取天气预报", LR_PASS);
  30. }else{
  31. lr_end_transaction("获取天气预报", LR_FAIL);
  32. }
  33.  
  34. return ;
  35. }

运行结果:

三、web_custom_request函数,创建HTTP协议完成webserive协议

脚本如下:

  1. Action()
  2. {
  3. web_custom_request("web_custom_request",
  4. "URL=http://www.webxml.com.cn/WebServices/WeatherWebService.asmx",
  5. "Method=POST",
  6. "TargetFrame=",
  7. "Resource=0",
  8. "Referer=",
  9. "Mode=HTTP",
  10. "EncType=application/soap+xml; charset=utf-8",
  11. "Body=<?xml version=\"1.0\" encoding=\"utf-8\"?>"
  12. "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
  13. "<soap12:Body>"
  14. "<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
  15. "<theCityName>59134</theCityName>"
  16. "</getWeatherbyCityName>"
  17. "</soap12:Body>"
  18. "</soap12:Envelope>",
  19. LAST);
  20.  
  21. return ;
  22. }

loadrunner之WebServices协议脚本编写(三种请求模式)的更多相关文章

  1. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

  2. LoadRunner录制HTTPS协议脚本

    学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...

  3. js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?

    你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...

  4. 云计算的三种服务模式:SaaS/PaaS/IaaS

    转载http://blog.chinaunix.net/uid-22414998-id-3141499.html 定义 云计算主要分为三种服务模式,而且这个三层的分法重要是从用户体验的角度出发的: S ...

  5. 云计算三种服务模式SaaS、PaaS和IaaS及其之间关系(顺带CaaS、MaaS)

    云计算架构图 很明显,这五者之间主要的区别在于第一个单词,而aaS都是as-a-service(即服务)的意思,这五个模式都是近年来兴起的,且这五者都是云计算的落地产品,所以我们先来了解一下云计算是什 ...

  6. 云计算 --> 三种服务模式IaaS,PaaS,SaaS

    三种服务模式IaaS,PaaS,SaaS “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或者运行在远程服务器端的应用,数据,或者服务.任何一个使用基于互联网的方法来计算,存储和开 ...

  7. APP的三种开发模式

    转载于http://pleasureswx123.github.io/2014/09/15/APP%E7%9A%84%E4%B8%89%E7%A7%8D%E5%BC%80%E5%8F%91%E6%A8 ...

  8. 云计算的三种服务模式:IaaS,PaaS和SaaS

    云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或 ...

  9. 初识云计算的三种服务模式 (IaaS SaaS PaaS)

    近期公司在使用其它云服务的同一时候.要封装自己的云服务,以下作为开发产品前的热身.来了解云计算中的三种服务模式,笔者也是从网络上查找,进行综合总结.请拍.. 三种服务模式 依据如今最经常使用.也就是比 ...

随机推荐

  1. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程

    一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU密集型(CPU-bound) ...

  2. 探秘Java中的String、StringBuilder以及StringBuffer(转载)

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...

  3. shell脚本--制作自己的服务脚本

    首先注意一下,我用的环境是centos6.5,中间有一些操作和在Ubuntu上有一些地方的操作是不同的, 编写脚本 首先看一个实例:假设有一个test的服务,可以通过命令对test进行启动.关闭或者重 ...

  4. Smarty 变量修饰器

    为了更方便的实现 功能与显示分离,通常会用 smarty 将功能代码中的数据 assign 到页面中,在页面中合理使用 smarty 的修饰方法,会使页面显示更美观! 一个数据可同时使用多个修饰函数, ...

  5. 使用ssh tunnel 来做代理或跳板

    接前文 http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接 前文说了如何配置自己的ssh config 来方 ...

  6. sleep、yield、wait、join的区别(阿里面试)

    1.  Thread.sleep(long) 和Thread.yield()都是Thread类的静态方法,在调用的时候都是Thread.sleep(long)/Thread.yield()的方式进行调 ...

  7. Java微信二次开发(八)

    高级接口,先做了两个(获取用户信息和获取关注者列表) 第一步:找到包com.wtz.vo,新建类UserInfo.java package com.wtz.vo; /** * @author wang ...

  8. python之tkinter使用-文件系统遍历

    # tkinter:文件系统遍历 import tkinter as tk, os from time import sleep class DirList(object): def __init__ ...

  9. 如何停止处于stopping状态的windows服务

    工作中有时需要启动和停止windows service,有时候会出现服务处于stopping或者starting的状态,但是,在services界面中,start service/stop servi ...

  10. Luogu4221 WC2018州区划分(状压dp+FWT)

    合法条件为所有划分出的子图均不存在欧拉回路或不连通,也即至少存在一个度数为奇数的点或不连通.显然可以对每个点集预处理是否合法,然后就不用管这个奇怪的条件了. 考虑状压dp.设f[S]为S集合所有划分方 ...