1. 什么是soap?
SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,用于在网络上交换结构化的和可扩展的信息。它被广泛用于分布式系统中的应用程序之间的通信。
SOAP通过HTTP(或其他传输协议)在客户端和服务器之间传输XML格式的消息。它使用XML来定义消息的结构和内容,并使用SOAP协议规定了消息的格式、编码规则、错误处理和通信方式等。
SOAP的核心概念包括以下几个部分:
- Envelope(信封):定义了消息的开始和结束,以及可选的命名空间声明。
- Header(头部):包含了可选的消息头部信息,用于扩展SOAP协议。
- Body(主体):包含了实际的消息内容,是SOAP消息的核心部分。
- Fault(错误):用于表示在处理SOAP消息时发生的错误或异常。
SOAP具有以下特点:
- 独立于平台和语言:SOAP消息使用标准的XML格式,使得它可以在不同的操作系统、编程语言和硬件平台上进行交互。
- 可扩展性:SOAP允许通过自定义的消息头部信息扩展协议功能,使得它可以适应不同的应用需求。
- 松耦合性:SOAP协议将消息的定义和通信方式进行了分离,使得系统的不同部分可以独立演化,提高了系统的灵活性和可扩展性。
- 支持多种传输协议:SOAP消息可以通过多种传输协议(如HTTP、SMTP等)进行传输,使得它可以在不同的网络环境下使用。
SOAP被广泛应用于Web服务(Web Services)中,它提供了一种标准的、跨平台的、可互操作的方式来实现不同系统之间的通信和集成。通过使用SOAP,不同的应用程序可以通过网络进行数据交换和调用远程方法,实现分布式系统的协作和集成。
2. 什么是WSDL?
网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。
简单的说,它就是一个Web Services的使用说明书。来看一个实例:
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 这是一个查询电话号码的接口描述
3. Python使用SOAP协议
安装第三方库
python2
pip install suds
python3
pip install suds-py3
程序调用
from suds.client import Client
client = Client('http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl')
print(client.service.getMobileCodeInfo('13581855347',''))
可以解析成字典对象
安装第三方库
pip install xmltodict
from suds.client import Client
client = Client('http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl')
response = client.service.getMobileCodeInfo('13581855347','')
# 将响应数据转换为字典对象
response_dict = xmltodict.parse(str(response))
print(response_dict)
# 打印请求的XML内容
request_xml = client.last_sent()
print(request_xml)
注:Client的参数必须是以wsdl结尾,不然会出错。
例如你拿到的接口是:http://xx.xxx.com/XingHeAreaService.asmx
你实例化的时候应该是
client = Client(‘http://xx.xxx.com/XingHeAreaService.asmx?wsdl’)