soap协议
1. 什么是SOAP协议
SOAP 是一种简单的基于 XML 的协议,它底层通过 HTTP 来交换信息。SOAP的优点是可以传递结构化的数据。
客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器。Web服务器再把这些请求转发给Web service请求处理器,它解析收到的SOAP请求,调用Web service,处理后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。
从http协议的角度看,最基本的四种操作是GET(查),POST(改),PUT(增),DELETE(删),我们用的比较多的是POST和GET方式。而SOAP 可视为POST的一个专用版本,遵循一种特殊的XML消息格式。
最常见的场景是:Server端使用了soap协议,而Client端也必须遵从该协议才能交互,本文介绍一下,如何在Client端使用SOAP协议,以及如何配置SOAP测试环境。
2. 什么是WSDL
网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。
简单的说,它就是一个Web Services的使用说明书。来看一个实例:
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
这是一个查询电话号码的接口描述,WSDL教程详见参考部分。
3. Python使用SOAP协议
(1) 安装支持库
如果开发服务端,可使用soaplib,SOAPPy等库,本文主要介绍开发客户端,使用suds库。
在python2中使用以下命令安装:
$ sudo pip install suds
在python3中使用以下命令安装:
$ sudo pip install suds-py3
(2) 程序调用
from suds.client import Client
client = Client('http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl')
print(client.service.getMobileCodeInfo('13581855347',''))
这是一个查询电话号码所在地的程序。
4. 搭建测试环境SOAPUI+WSDL
SoapUI是专门针对webservice接口的测试工具,它即可以模拟Client,也可以模拟Server。下面是在ubuntu上安装SOAPUI的方法。
(1) 下载SOAPUI
https://www.soapui.org/downloads/latest-release.html
(2) 安装
$ sudo ./SoapUI-x64-5.4.0.sh
$ sudo SoapUI-5.4.0 # 运行
(3) 作为Server端测试
在Projects上点右键,选择New SOAP Project,Project Name启一个名字,Initial WSDL中填写http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl新建一个Project,当然也可以参考例子编写自己的接口。
在MobileCodeWSSoap12上,点右键Generate SOAP Mock Service,按提示建立Service,然后点绿色键头运行。
此时,打开http://127.0.0.1:8088/,能看到Service已被启动,把上面python上的测试的IP换成本机地址,也可正常运行了。
5. 参考
(1) suds调用webserive时出现suds.Typenotfound错误
http://www.mamicode.com/info-detail-2324352.html
(2) WSDL 教程
http://www.w3school.com.cn/wsdl/
相关阅读
后期文章陆续登在公众号 最近在学习数学建模,但是matlab用的不是很习惯,于是我尝试用python解决几道,别说还蛮顺手,以下知识点是老师
学python也快2个礼拜了,从开始看别人写的爬虫代码,然后试着抄着学习,感觉没太大进步,最大收获就是改了几处bug(可能有些地方不适用我的
Begals是可以和朋友一起玩的一个推理游戏。你的朋友想到一个随机的、没有重复的3位数字,你尝试去猜测它是什么。 每次猜测之后,朋友
昨天刷头条时得知赵丽颖当妈妈了。作为一名程序员突发奇想,不如用Python简单叙述一下冯绍峰和赵丽颖的爱情故事,于是有了本文。 代
写在前面 多线程的概念 Python中的多线程 生产者-消费者模型 Condition版生产者-消费者模型代码示例 线程优先级队列( Queue) G