SoapUI调⽤webservice实现的两种⽅式
SoapUI⽤来做测试,已经是很多⼈做过的事情了,⽽且⽹上教程也很多。不过还是写下来,对⽐webservice协议与http协议脚本编写的不同。
⾸先测接⼝得有⼀个服务,刚好笔者所在项⽬做ESB集成。就顺道⽤⼀下⼯作环境截⼏张图。
业务模型:
  从客户端post⼀个字符串给ESB服务器,ESB服务器收到该请求后,返回⼀个在原字符串前添加⼀个Hello。
请求的报⽂
添加三个head
“Svc_Inbound","TEST"
”Svc_ServiceCode","AAA-TEST-BBB"
"Svc_Version","1"
报⽂正⽂
<?xml version="1.0" encoding="UTF-8"?>
调用webservice服务<soapenv:Envelope xmlns:soapenv="/soap/envelope/" xmlns:ser="service.xfiresb">
<soapenv:Header/><soapenv:Body>
<ser:sayHi>
<ser:in0>this is a request</ser:in0>
</ser:sayHi>
</soapenv:Body></soapenv:Envelope>
服务器返回的报⽂
<soap:Envelope xmlns:soap="/soap/envelope/" xmlns:xsd="/2001/XMLSchema" xmlns:xsi="/2001/XMLSchema-i
nstance"> <soap:Body>
<ns1:sayHiResponse xmlns:ns1="service.xfiresb">
<ns1:out>Hello this is a request</ns1:out>
</ns1:sayHiResponse>
</soap:Body>
</soap:Envelope>
1.通过SOAP协议实现
功能的实现,⾸先⽤soapui来实现,打开soapui ,file---new soap project
在⼯程创建弹出框输⼊WSDL地址,输⼊⼯程名称,点击OK
双击Request 1,在创建⼯程时创建的默认请求,双击后会看到该请求内容。编辑request如下,在head标签添加我们的服务需要的head内容:
这样直接点击运⾏标签,则可直接调⽤该服务。
这样⼦就实现了soapui对接⼝的调⽤。
2.通过http协议实现
webservice是可以通过多种协议来实现的,但最常⽤的是http协议,就第⼀部分的内容,可以通过查看Raw标签查看http请求与返回信息
从上图可以看出,其实SOAP协议其实是通过http协议来传递数据的,⽽soapui也可以创建http协议来实现接⼝的调⽤
创建⼀个REST⼯程,直接在弹出框中粘贴url地址(注是server地址,⽽不是wsdl地址)
构建⼀个http请求
如上图,头⽂件全部加上(其实部分head不是必填项,但为了与webservice保持完全⼀致,这⾥全部添加上了)
可以看到,这样⼦实现的http请求也是OK的。
SOAP协议使⽤的是xml报⽂,⽽http协议,则是标准的http报⽂,只要符合http协议的传递数据,均可以采⽤http协议来实现数据通信。
原理搞懂了,基本上也没什么难的,可以从接⼝的定义去理解接⼝的本质。
这样就实现了SoapUI两种实现接⼝的调⽤。对于有公开的wsdl接⼝的可以通过Soap协议调⽤,⽽对于没有公开的WSDL的接⼝,则可以通过http来实现。现在数据传递主要是xml报⽂与json,⽽json的数据传递更多则是通过http来实现。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。