LR基于HTTP协议的WebService测试

最近发现之前做过的东西,在未掌握牢固的情况下,很快就会忘掉,所以,通过这些东西来保留下一些测试方法,以便以后能够回顾。

WebService的最后一种测试方法,也就是通过HTTP协议来手写脚本完成测试,这里虽说手写脚本,其实完成的大部分还是复制粘贴的工作,很简单,下面简要记录。

这种方式和soap_request一样,都是找到接口文档的请求,利用这些请求书写函数。

首先,LR新建HTTP协议的脚本。

第二,脚本中用web_custom_request();函数,其中参数url为我们的天气预报的地址:http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx

Method=POST,Body里面即是我们的请求,最终代码如下:

web_custom_request("web_custom_request",
  "URL=http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx",
  "Method=POST",
  "TargetFrame=",
  "Resource=0",
  "Referer=",
  "Body=<?xml version=\"1.0\" encoding=\"utf-8\"?><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\">   <soap12:Body>    <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">        <theCityName>上海</theCityName>    </getWeatherbyCityName>   </soap12:Body></soap12:Envelope>",
  LAST);

这就完成了我们的web_custom_request()函数

这时我们进行回访,脚本中会产生错误:

Action.c(17): Error -26616: HTTP Status-Code=415 (Unsupported Media Type) for
"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx" [MsgId: MERR-26616]

产生这个错误的原因是我们发送的数据包没有明确格式类型,服务器在校验格式时出现错误,所以我们需要手动添加一个Header头部分,使用函数web_add_header()添加web_add_header("Content-Type",
  "application/soap+xml; charset=utf-8");

这样再次运行就可以成功了。

细心的同学可能会发现在<theCityName>上海</theCityName>

这里明明是填写城市的地方,为什么填的是一堆乱码呢。

这是由于我们发送的格式是utf-8格式的,那么在发送城市名字时也需要是utf-8编码的,要不然服务器是无法识别的,至于转换utf-8编码,可以通过百度搜索utf-8编码转换即可。

这就是LR测试webservice的最后一种方式,到现在3种方式已经完毕。

时间: 2024-10-03 10:13:57

LR基于HTTP协议的WebService测试的相关文章

Android实现基于http协议的文件下载测试

  概述   网络编程中文件的上传下载是最常见的场景,本着不重复造轮子的原则,日常工作如果遇到相关问题我们首先想到的可能是从网上找现成的代码直接拿来用,很少去关心具体是如何实现的,可能也是没时间去研究别人如何实现.如果代码能够满足我们现阶段的要求,则万事大吉,但是如果使用代码的过程中出现意想不到的问题,我们解决起来可能会比较麻烦,因为代码不是我们自己写的,对代码不熟,不能快速的查找问题的原因.个人认为不重复造轮子的前提是你必须有能力造一个相同的轮子,这样在使用别人的代码时才能更加得心应手.   

Jmeter对基于websocket协议的压力测试

WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.在此WebSocket 协议中,为我们实现即时服务带来了两大好处: 1. Header  互相沟通的Header是很小的-大概只有 2 Bytes 2. Server Push 浏览器请求 GET /WebSocket/LiveVideo HTTP/1.1

Android与服务器端数据交互(基于SOAP协议整合android+webservice)

此文出自:http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务器端action请求数据.当然调用服务器端方法获取数据并不止这一种.WebService也可以为我们提供所需数据, 那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起. 我们在PC机器java客

android客户端与服务器交互数据(基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合)

在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webService调用,当然KSOAP已经提供了基于android版本的jar包 首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包 然后新建android项目 以

使用JMeter测试基于WebSocket协议的服务

使用JMeter测试基于WebSocket协议的服务 :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:3px}iframe{border:0}figure{-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0}kbd{bord

Zabbix(五):高级应用-web方案、被动监控、基于snmp协议被动监控、proxy配置测试实例

1.web方案 web scenario:web监控方案,web场景: web scenarios指的是监控指定的web站点的资源下载及页面响应时间等数据指标: (1)创建web监控需要先定义一个web scenario(方案): 一个web方案包括一个或多个HTTP请求或步骤(steps) 每次监控都是按照预先定义的步骤的顺序执行: (2)通过web监控方案可以获取到下列信息: 整个web方案中所有步骤的速度和响应时间,以及平均下载速度和平均响应时间: 失败的步骤号 失败的报错信息 (3)在设

基于JAX-WS规范的WebService实现

1.相关介绍 介绍Web Service需要首先了解SOA.SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过中间的契约(独立于硬件平台.操作系统和编程语言)连接起来,使得各种形式的功能单元更好的集成.WebService是SOA的一种很好的实现方式,WebService采用HTTP作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式. 本文重要介绍基于JAX-WS规范的We

WebService测试方案

1.WebService简介 WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法. WebService常用的框架有axis.xfire.cxf等. WebService发布后,其服务是封装在一个wsdl(Web Services Description Language,Web服务描述语言)文件中,客户端发请求主要是向发布好的wsdl地址以SOAP方式发请求,调用过程如下: Ø  服务端: n  生成服务描述文件,以供客户端获取. n 

第13章 TCP编程(3)_基于自定义协议的多进程模型

5. 自定义协议编程 (1)自定义协议:MSG //自定义的协议(TLV:Type length Value) typedef struct{ //协议头部 char head[10];//TLV中的T unsigned int checkNum; //校验码 unsigned int cbSizeContent; //协议体的长度 //协议体部 char buff[512]; //数据 }MSG; (2)自定义读写函数 ①extern int write_msg(int sockfd, cha