soap协议概述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了soap协议概述相关的知识,希望对你有一定的参考价值。

SOAP 概要

此教程已向您讲解了如何透过 HTTP 使用 SOAP 在应用程序之间交换信息。

您已经学习了有关 SOAP 消息中不同元素和属性的知识。

您也学习了如何把 SOAP 作为一种协议来使用以访问 web service。


soap:简单对象访问协议 Simple Object Access Protocol

    简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,

它被设计成在WEB上交换结构化的和固化的信息。


webService三要素:

    SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一,

      soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。


 

SOAP 消息的基本结构

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
  ...
  ...
</soap:Header>

<soap:Body>
  ...
  ...
  <soap:Fault>
    ...
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>


语法规则

这里是一些重要的语法规则:

SOAP 消息必须用 XML 来编码

SOAP 消息必须使用 SOAP Envelope 命名空间

SOAP 消息必须使用 SOAP Encoding 命名空间

SOAP 消息不能包含 DTD 引用

SOAP 消息不能包含 XML 处理指令



SOAP Envelope 元素

必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可把 XML 文档定义为 SOAP 消息。

请注意 xmlns:soap 命名空间的使用。它的值应当始终是:

http://www.w3.org/2001/12/soap-envelope


SOAP Header 元素

可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。


SOAP HTTP Binding

SOAP 方法指的是遵守 SOAP 编码规则的 HTTP 请求/响应。

HTTP + XML = SOAP

SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。

HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。


【SOAP 实例】

一个 SOAP 实例

在下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: "http://www.example.org/stock"

【SOAP 请求】

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

  <soap:Body xmlns:m="http://www.example.org/stock">
    <m:GetStockPrice>
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
  
</soap:Envelope>


【SOAP 响应】

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

  <soap:Body xmlns:m="http://www.example.org/stock">
    <m:GetStockPriceResponse>
      <m:Price>34.5</m:Price>
    </m:GetStockPriceResponse>
  </soap:Body>
  
</soap:Envelope>

参考资料:http://www.w3school.com.cn/soap/index.asp

本文出自 “JianBo” 博客,转载请与作者联系!

以上是关于soap协议概述的主要内容,如果未能解决你的问题,请参考以下文章

iOS--对接soap协议接口

Web服务(Web Service)相关概念

09_httpclietn测试SOAP协议

java WebService接口采用SOAP协议的调用

08_使用TCP/IP Monitor监视SOAP协议

YII框架之soap协议的配置跟使用(Webservice)