SOAP 语法


SOAP语法

SOAP stands for Simple Object Access Protocol. It is a messaging protocol used in web services to exchange structured information between network nodes. SOAP has a syntax defined in an XML schema that allows developers to easily build messages using a number of well-established XML constructs.

SOAP消息结构

SOAP消息请求和响应遵循下面的结构。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header>
    ...
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    ...
  </SOAP-ENV:Body>
  <SOAP-ENV:Fault>
    ...
  </SOAP-ENV:Fault>
</SOAP-ENV:Envelope>

消息头使用SOAP-ENV:Header标记,用于传递附加信息。消息体使用SOAP-ENV:Body标记,contains the actual SOAP message. 消息体是需要传递的应用数据的主要部分。

SOAP-ENV:Fault标记只出现在响应消息中,用于传递处理错误的相关信息。

SOAP消息头

SOAP消息头允许传递一些元数据或其他有关消息本身的信息。SOAP规范没有指定必须包括哪些信息,但以下是一些最常使用的 SOAP头部元素:

  • Addressing
  • Authentication
  • Message ID
  • Timestamp
  • Session information

SOAP消息体

SOAP消息体包含了要传输的载荷数据。这些数据可以是任何有效的XML文档(尽管不能包含XML声明)。消息体中的内容根据SOAP规范的类型系统进行解码和编码。SOAP类型系统是对XML Schema的扩展,允许定义更多种类型。

SOAP消息错误

当SOAP请求或响应包含某种问题时,应用程序会返回一个SOAP-ENV:Fault节点。Fault节点包含有关问题的信息:Fault Code、Fault String、Fault Actor和detail。

<SOAP-ENV:Fault>
  <faultcode>SOAP-ENV:Client</faultcode>
  <faultstring>Failed to perform action X</faultstring>
  <faultactor>http://example.com/service</faultactor>
  <detail>
    <ErrorDetails>...</ErrorDetails>
  </detail>
</SOAP-ENV:Fault>
  • faultcode:用于指定服务器端的错误类型。SOAP规范定义了三个预定义错误代码:Client、Server 和 Receiver。
  • faultstring:用于向用户展示友好的错误信息。它应该描述了出现错误。
  • faultactor:可以用来指定哪个端点抛出了故障。
  • detail: contains additional details about the fault.

SOAP与Web Services

SOAP消息往往用于在分布式系统中执行消息传递。SOAP是一种可扩展方式,能够用于鉴定、识别和路由Web Service请求。SOAP既可以与RESTful Web服务一起使用,也可以和标准的传输协议(如HTTP、HTTPS、TCP和FTP)一起使用。

SOAP可以与各种编程语言和框架一起使用。包括Java、Python、C#、C++和Ruby等。

在使用SOAP之前,需要通过Web服务描述语言(WSDL)定义SOAP消息和传输机制。WSDL定义了Web Service的接口,包括数据格式、协议和绑定。大多数SOAP工具和交互式开发环境(如Apache Axis2,Eclipse SOAPUI和Visual Studio)支持WSDL。

SOAP的优势

  • 跨语言:由于SOAP使用XML,因此可以使用各种编程语言在多个平台之间进行通信。
  • 可扩展性:SOAP支持全面XML扩展来支持特定的实现和数据需求。
  • 桌面友好:SOAP轻量级并且使用HTTP,可以通过防火墙传输。
  • 设计良好:SOAP广泛使用且经过多年发展,因此可以在各种环境中稳定、可靠、安全和可伸缩地使用。