SOAP 教程学习笔记
什么是 SOAP
SOAP(Simple Object Access Protocol)是一种基于 XML 的通信协议,用于在分布式系统中交换数据。它被设计为独立于任何特定的操作系统、编程语言或对象模型,可以在 Internet、内部网络以及单机上使用。
SOAP 的结构
SOAP 消息由一个“信封”和一个“主体”组成。
信封
SOAP 信封(Envelope)定义了消息的开始和结束,并包括必需的 XML 命名空间。信封有两个可选元素:Header 和 Body。
Header
Header 元素包含与消息传递相关的各种属性,如安全性、路由和标识符等。Header 元素对于某些应用程序可能是必需的。
Body
Body 元素是 SOAP 消息的主体,包括实际的数据。Body 元素包含被调用的方法和参数,以及返回值或出错信息。
主体
SOAP 消息的主体包含一个方法调用和一个或多个参数。主体中的方法调用遵循 RPC(Remote Procedure Call,远程过程调用)规范。
实例
下面是一个简单的 SOAP 请求示例:
Copy CodePOST /somepath HTTP/1.1
Host: www.example.com
Content-Type: text/xml; charset=utf-8
Content-Length: nnnn
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
...
</soap:Header>
<soap:Body>
<m:GetStockPrice xmlns:m="http://www.example.com/stocks">
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
在这个请求中,我们向某个 Web 服务发送了一条 GetStockPrice 请求。这个请求包含一个名称为 IBM 的股票参数。请求的响应可能如下所示:
Copy CodeHTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: nnnn
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
...
</soap:Header>
<soap:Body>
<m:GetStockPriceResponse xmlns:m="http://www.example.com/stocks">
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
在这个响应中,GetStockPrice 方法返回了一个名为 Price 的参数值。
结论
SOAP 是一种功能强大、灵活和可扩展的通信协议,适用于各种不同的场景。使用 SOAP,我们可以轻松地在不同的系统中传输和共享数据。