几年前还挺火的概念,最近涉及到的工作,还是要补充基础知识,
转自:http://blog.sina.com.cn/s/blog\_64a98f1f0100ki2t.html
Webservice介绍
Webservice它是用于构建应用程序的通用模型,可以在支持网络通信的任何操作系统中实现和运行;它是一种新型web 应用程序分支,自包含、自描述和模块化 可通过以下方式发布、定位和访问的应用程序web调用。 Web Service它是一个应用程序组件,在逻辑上为其他应用程序提供数据和服务 。每个应用程序都使用网络协议和指定的标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service通过内部执行获得所需的结果。Web Service它可以执行从简单请求到复杂业务处理的任何功能。部署后,其他Web Service应用程序可以发现并调用它们部署的服务。
实际上,WebService的主要目标是跨平台互操作性。为了实现这一目标,WebService完全基于XML(可扩展标记语言)XSD(XMLSchema这种独立于平台和软件供应商的标准是创建互操作性、分布式应用程序的新平台。
技术与规则
- XML:描述数据的标准方法.
- SOAP:代表信息交换的协议.
- WSDL:Web服务描述语言.
- UDDI(Universal Description, Discovery and Integration):通用描述、发现和集成,独立于平台并基于XML用于描述互联网上业务的协议。
--------------------------------------------------------------------------------------
SOAP介绍
SOAP:简单对象访问协议。SOAP它是轻量级的,简单的,并且基于。 XML 该协议旨在实现 WEB 交换结构化和固定信息。 SOAP 它可以与许多现有的互联网协议和格式结合使用,包括超文本传输协议(HTTP)简单邮件传输协议(SMTP)多用途互联网邮件扩展协议(MIME)。它还支持来自消息传递系统(RPC)等待大量申请。SOAP最大限度地减少多个平台访问数据时出现的不兼容问题。
第一节、SOAP的组成和构造
SOAP 它由四个部分组成:
SOAP 封装:它定义了一个框架,用于描述消息中的内容是什么、谁应该处理它以及它是可选的还是必要的。
SOAP 编码规则:它定义了一种序列化机制,用于交换应用程序定义的数据类型的实例。
SOAP RPC 表示形式:它定义用于表示远程过程调用和回复的协议。
SOAP 绑定:定义使用底层传输协议完成节点间交换的方法SOAP包装约定。
SOAP 消息基本上是从发送端到接收端的单向传输,但它们通常组合在一起以执行类似于/响应模式。 所有的SOAP消息全部使用XML编 码。 一条 SOAP 消息只是一条普通的消息 XML 文档 ,包含以下元素:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www./2001/12/soap-envelope"
soap:encodingStyle="http://www./2001/12/soap-encoding">
... SOAP头部消息
... SOAP呼叫和响应消息
... SOAP处理错误消息
把 SOAP 绑定到 HTTP 提供同时利用 SOAP 风格和分散灵活性的特点,以及 HTTP 丰富的功能库的优势。留 HTTP 上传送 SOAP 并不是说 SOAP 将覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义自然会映射到 HTTP 语义学。使用中 HTTP 在协议绑定的上下文中, RPC 请求映射到 HTTP 根据要求,以及 RPC 回复映射到 HTTP 答。然而,在 RPC 上使用 SOAP 不限于 HTTP 协议绑定。SOAP它也可以绑定到TCP和UDP协议上。
**第二节、SOAP语法规则**
* SOAP 消息必须使用 XML 来编码
* SOAP 消息必须使用 SOAP Envelope 命名空间
* SOAP 邮件不能包含 DTD 引用
* SOAP 邮件不能包含 XML 处理指令
**第三节、SOAP元素介绍**
* **SOAP Envelope 元素**
必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可以 XML 文档定义为 SOAP 消息。
请注意 xmlns:soap 命名空间的使用。其值应始终为: [http://www.w3.org/2001/12/soap-envelope](http://www.w3.org/2001/12/soap-envelope)
它可以将封装定义为 SOAP 封装:
...
Message information goes here
...
**xmlns:soap 命名空间**
SOAP 消息必须具有与 "http://www.w3.org/2001/12/soap-envelope" 相关 Envelope 元素。如果使用不同的命名空间,应用程序将遇到错误并丢弃此消息。
**encodingStyle 属性**
SOAP 的 encodingStyle 属性用于定义文档中使用的数据类型。此属性可以出现在任何 SOAP 元素,并将应用于元素的内容和元素的所有子元素。SOAP 消息没有默认编码。
语法: oap:encodingStyle="URI"
实例:
...
Message information goes here
...
* **SOAP Header 元素**
可选的 SOAP Header 元素可以包含有关 SOAP 消息的应用程序特定信息(如身份验证、付款等)。如果 Header 如果提供了该元素,则必须 Envelope 元素的第一个子元素。
注释: 所有 Header 元素的直接子元素必须是限定命名空间。
234 ... ...
上面的示例包括一个 "Trans" 元素的头部,其值为 234此元素 "mustUnderstand" 属性的值为 "1"。
SOAP 在默认命名空间中 ("http://www.w3.org/2001/12/soap-envelope") 定义了三个属性。这三个属性是:actor、 mustUnderstand 以及 encodingStyle。这些定义在 SOAP 标头的属性定义容器的影响 SOAP 消息处理。
actor 属性
-----------
通过沿消息路径传递不同的端点,SOAP 消息可以从发送方传播到接收方。不是 SOAP 消息的所有部分都旨在传输到 SOAP 但是,另一方面,消息的最终端点可能旨在传输到消息路径上的一个或多个端点。
SOAP 的 actor 属性可用于 Header 将元素寻址到特定终结点。
### 语法
soap:actor="URI"
### 实例
234 ... ...
mustUnderstand 属性
--------------------
SOAP 的 mustUnderstand 该属性可用于标识标题项是必需的还是可选的,以便收件人处理它。
假如您向 Header 元素的子元素已添加 "mustUnderstand="1"它可以指示处理此标头的收件人必须识别此元素。如果收件人无法识别此元素,则在处理此标头时必须使其失效。
### 语法
soap:mustUnderstand="0|1"
### 实例
234 ... ...
* SOAP Body 元素
============
必需的 SOAP Body 该元素可以包含要传递到消息的最终终结点的实际消息 SOAP 消息。SOAP Body 元素的直接子元素可以是限定命名空间。SOAP 在默认命名空间中("http://www.w3.org/2001/12/soap-envelope")定义了 Body 元素中的元素。即 SOAP 的 Fault 用于指示错误消息的元素。
Apples 上面的例子要求苹果的价格。请注意,以上内容 m:GetPrice 和 Item 元素是特定于应用程序的元素。他们不是 SOAP 标准的一部分。还有一个 SOAP 响应应如下所示:
1.90
* SOAP Fault 元素
=============
来自 SOAP 消息的错误消息在 Fault 元素内部。如果提供 Fault 元素,它必须是 Body 元素的子元素。在一个 SOAP 消息中,Fault 该元素只能出现一次。
SOAP 的 Fault 该元素用于以下子元素:
子元素
描述
用于识别故障的代码
故障的可读说明
有关谁导致故障的信息
存留涉及 Body 元素的应用程序特定错误消息
SOAP Fault Codes
-------------------
定义如下 faultcode 该值必须用于描述 faultcode 元素中:
错误
描述
Mismatch
SOAP Envelope 为元素找到无效的命名空间
MustUnderstand
Header 元素的直接子元素(设置设置为 "1" 的 mustUnderstand 无法理解该属性。
Client
消息组成不正确或包含不正确的信息。
Server
服务器有问题,因此无法继续。
第四节、SOAP HTTP Binding
=====================
HTTP 协议
----------
HTTP 在 TCP/IP 在上面沟通。HTTP 客户端使用情况 TCP 连接到 HTTP 服务器。建立连接后,客户端可以发送 HTTP 请求消息:
POST /item HTTP/1.1 Host: 189.123.345.239 Content-Type: text/plain Content-Length: 200 然后,服务器将处理此请求并发送 HTTP 响应。此响应包含一个状态代码,指示请求的状态:
200 OK Content-Type: text/plain Content-Length: 200 在上面的示例中,服务器返回了一个 200 的状态代码。这是 HTTP 的标准成功代码。如果服务器无法解码请求,则可能会返回类似于以下内容的信息:
400 Bad Request Content-Length: 0 SOAP 方法是指合规性 SOAP 编码规则 HTTP 请求/响应。
**HTTP + XML = SOAP**
SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。
HTTP POST 请求指定至少两个 HTTP 头:Content-Type 和 Content-Length。
Content-Type
--------------
SOAP 请求和响应的数量 Content-Type 标头可以定义消息 MIME 类型,以及用于请求或响应的类型 XML 正文的字符编码(可选)。
### 语法
Content-Type: MIMEType; charset=character-encoding
### 例子
POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8
Content-Length
----------------
SOAP 请求和响应的数量 Content-Length 标头指定请求或响应正文的字节数。
### 语法
Content-Length: bytes
### 例子
POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: 250
第五节、SOAP 实例
===========
在以下示例中,a GetStockPrice 请求已发送到服务器。此请求有一个 StockName 参数,并在响应中,a 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 IBM **SOAP 响应:**
HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn 34.5
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除