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 Code
POST /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 Code
HTTP/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,我们可以轻松地在不同的系统中传输和共享数据。