WEB Service SOAP.docx

上传人:b****5 文档编号:30702555 上传时间:2023-08-19 格式:DOCX 页数:9 大小:246.87KB
下载 相关 举报
WEB Service SOAP.docx_第1页
第1页 / 共9页
WEB Service SOAP.docx_第2页
第2页 / 共9页
WEB Service SOAP.docx_第3页
第3页 / 共9页
WEB Service SOAP.docx_第4页
第4页 / 共9页
WEB Service SOAP.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

WEB Service SOAP.docx

《WEB Service SOAP.docx》由会员分享,可在线阅读,更多相关《WEB Service SOAP.docx(9页珍藏版)》请在冰豆网上搜索。

WEB Service SOAP.docx

WEBServiceSOAP

WEBServiceSOAP

一.SOAP概述

SOAP(SimpleObjectAccessProtocol),它是一种标准消息传递协议,通常是WebService的事实标准。

SOAP是以XML为基础,SOAP消息格式是由XMLSchema模式定义,通过XML命名空间使SOAP具有很强的扩展性。

SOAPmessage:

SOAPXML文档实例,通常通过其他某些网络协议的有效载荷来携带SOAP消息,例如:

HTTP,SMTP,TCP/IP等。

WebService可以使用两种方式:

One-Waymessaging(单向消息传递)或者Request/Responsemessaging(请求/响应消息传递)

二.SOAP的基本结构

SOAP中根元素是Envelope元素。

Envelope元素中可以包含多个可选的Header元素,必须同时包含一个Body元素。

Header元素必须是Envelope元素的直接子元素,并且要位于Body元素之前。

详细见下图:

三.SOAP的命名空间

SOAP消息可以在Header元素和Body元素中包含若干不同的XML元素,使用唯一的命名空间来标识它们。

xmlns:

soap=http:

//schemas.xmlsoap.org/soap/envelope/命名空间定义了标准SOAP元素(例如:

Envelope,Header和Body等)。

Header元素的每个头文件都有自己的命名空间,Body元素也定义了自己的命名空间。

详细见下图:

SOAP基本格式

四.SOAP头

SOAPheader在WebService中的应用越来越多,例如安全性、事务以及其他各种服务方面的大量“标准”文件头。

SOAP文件头是扩展SOAP协议的一个功能非常强大的措施,SOAP文件头的扩展性是SOAP得以流行并且获得其他协议没有取得成功的另一个原因。

4.1actor属性(next、ultimatereceiver)

Actor是由SOAP注释定义的,在SOAP1.2中,actor属性已经被更名为role.Actor属性和XML命名空间组合在一起使用,以确定要用哪个代码模块处理具体的Header。

Next角色表示消息路径中的下一个节点必须处理文件头。

Ultimatereceiver角色表示只有消息的最终接收方才能处理指定的Header。

详细见下图:

4.2mustUnderstand属性

表示处理是否为:

强制性处理,如果一个节点不能识别某一个强制性Header,那么必定会产生SOAP错误。

如果MustUnderstand属性的值是0,如果应用程序没有能够识别该文件头,那么必须删除此文件头。

详细见下图:

SOAPHeader格式

五.SOAP体

Body元素要包含应用程序专有的数据或者错误消息。

应用程序的专有数据可以是任意XML数据或者是提供给过程调用的任意参数。

只有SOAP消息最后的接收方应该处理SOAPBody。

六.SOAP消息传递模式

SOAP支持四种消息传递模式(RPC/Literal,Document/Literal,RPC/Encoded,andDocument/Encoded),但是WS-IBasicProfile只允许RPC/Literal和Document/Literal,不支持SOAPencoding,因为它会引起严重的互操作性。

Literal表示可以根据XML模式验证XML文档的有效性。

6.1Document/Literal消息传递模式

Document/Literal消息传递模式中,SOAP的Body元素包含一个XML格式良好的文档段,上面就是一个很好的例子;

6.2RPC/Literal消息传递模式

RPC/Literal消息传递模式将Body元素格式化成struct。

PRC请求消息包含调用的方法名称与输入参数。

RPC响应消息则包含返回值和各种输出参数(或者错误)

SOAP请求消息:

xmlversion="1.0"encoding="UTF-8"?

>

Envelope

xmlns:

soap="http:

//schemas.xmlsoap.org/soap/envelope/"

xmlns:

mh="http:

//www.Monson-H

Body>

getBookPrice>

0321146182

getBookPrice>

Body>

Envelope>

SOAP返回消息

xmlversion="1.0"encoding="UTF-8"?

>

Envelope

xmlns:

soap="http:

//schemas.xmlsoap.org/soap/envelope/"

xmlns:

mh="http:

//www.Monson-H>

Body>

getBookPriceResponse>

24.99

getBookPriceResponse>

Body>

Envelope>

6.3消息传递模式和消息交换模式

MessagingModes:

(RPC/Literal,Document/Literal,RPC/Encoded,andDocument/Encoded)。

消息传递模式通常描述的是SOAP消息的有效负载:

即XML文档段或者是远程过程调用对应的参数和返回值的XML表示。

MessagingExchangePatterns(MEPs):

One-WayandRequest/ResponseMEPs。

消息交换模式表示的是消息的流向,而不是消息的内容

七.SOAP错误

SOAP错误是由消息接收方(消息的中介体或者最终接收方)产生的。

只有使用的请求/响应消息传递模式的时候,才要去接收方将SOAP错误传递给发送方。

7.1faultcode元素

faultcode表示错误错误代码,包括Client、Server、VersionMismatch和MustUnderstand不同类型。

lClient表示传递SOAP消息的节点出现了错误(发送错误),例如:

消息不是一个良好的格式,或者包含无效数据、缺少所期望的信息,接收节点就会产生一个Client错误。

lServer表示接收到SOAP消息的节点发生故障或者不能处理SOAP消息(中介体或者最终接收方引起的错误)。

例如:

当接收节点处理SOAP消息不能连接到数据库等资源,就会产生一个Server错误。

lVersionMismatch表示接收节点不能识别SOAP消息的Envelope元素的命名空间,例如:

SOAP1.1的节点接收到SOAP1.2消息。

lMustUnderstand表示节点不能识别“MustUnderstand=1”指定的header,就会产生这个类型的fault。

l还有一些非标准的错误信息例如:

Body>

Fault>

wsse:

InvalidSecurityToken

Aninvalidsecuritytokenwasprovided

Fault>

Body>

7.2faultstring元素

faultstring表示错误的描述,是强制性元素,可以使用特殊属性xml:

lang表示文本消息使用的语言。

7.3faultactor元素

faultactor表示遇到错误并且产生错误的节点,如果错误节点是一个中介节点,那么需要使用faultactor元素,但是如果错误节点是最终接收方,则该元素可选。

7.4detail元素

如果Body元素的内容产生错误,必须包含错误消息的detail元素,但是如果文件头发生错误,则不能包含该元素

SOAP错误格式

八.SOAP和HTTP

目前最常用SOAP的传输体是HTTP。

大多数HTTP的传输由HTTPGET请求和HTTP应答组成的,HTTPGET请求指定了请求的页面,可以包含一些参数,HTTPresponse作为有效负载返回到到请求方。

另外,HTTPPOST请求有效负载,所以适合携带SOAP消息。

8.1HTTPPOST消息传输的SOAP

HTTPPOST消息必须包含SOAPAction文件字头;SOAP1.2用(“application/soap+xml”)MIME类型替换SOAPAction文件头。

Content-Type是text/xml,表示有效负载是一个XML文档。

带附件的SOAP会指定mulitpart/related,但是BP不推荐这样做。

POST/jwsbook/BookQuoteHTTP/1.1

Host:

www.Monson-H

Content-Type:

text/xml;charset="utf-8"

Content-Length:

295

SOAPAction=""

xmlversion="1.0"encoding="UTF-8"?

>

Envelope

xmlns:

soap="http:

//schemas.xmlsoap.org/soap/envelope/"

xmlns:

mh="http:

//www.Monson-H

Body>

getBookPrice>

0321146182

getBookPrice>

Body>

Envelope>

8.2HTTP响应代码

200-level的HTTP成功代码包括:

200OK表示消息没有错误;包含一个正常的SOAP响应消息。

200Accepted:

表示成功处理了请求,但是没有SOAP响应数据,类似与void返回类型。

400-level错误

400BadRequest:

表示SOAP消息中的HTTP请求或者XML格式不正确

405MethodNotAllowed:

如果不是通过HTTPPOST方式传递的SOAP消息,返回此错误。

415UnsupportedMediaType:

text/xml值包含一个Content-Type文件头,否则将返回此错误。

500InternalServerError:

当请求/响应MEP中的响应消息是SOAP错误时,必须使用此代码。

HTTP/1.1200OK

Content-Type:

text/xml;charset='utf-8'

Content-Length:

311

xmlversion="1.0"encoding="UTF-8"?

>

Envelope

xmlns:

soap="http:

//schemas.xmlsoap.org/soap/envelope/"

xmlns:

mh="http:

//www.Monson-H>

Body>

getBookPriceResponse>

24.99

getBookPriceResponse>

Body>

Envelope>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1