快速业务通道

SOAP协议初级指南 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
求,如果头元素的URI不能被识别,头元素可以被安全地忽略。

但你不能安全的忽略所有的SOAP体中的头元素。如果一个特定的SOAP头对正确处理消息是很关键的,这个头元素能被用SOAP属性mustUnderstand=’true’标记为必须的。这个属性告诉接收者头元素必须被识别并被处理以确保正确的使用。为了强迫前面causality头成为一个必须的头,消息将被写成如下形式:

<soap:Envelope xmlns:soap=‘urn:schemas-xmlsoap-org:soap.v1‘> <soap:Header> <causality soap:mustUnderstand=‘true‘ xmlns="http://comstuff.com"> <id>362099cc-aa46-bae2-5110-99aac9823bff</id> </causality> </soap:Header> <!— soap:Body element elided for clarity —> </soap:Envelope>

SOAP软件遇到不能识别必须的头元素情况时,必须拒绝这个消息并出示一个错误。如果服务器在一个SOAP请求中发现一个不能识别的必须的头元素,它必须返回一个错误响应并且不发送任何调用到目标对象。如果客户端在一个SOAP请求中发现一个不能识别出的必须的头元素,它必须向调用者返回一个运行时错误。(在COM情况下,这将映射为一个明显的HRESULT)

SOAP数据类型

在SOAP消息中,每个元素可能是一个SOAP结构元素,一个根元素,一个存取元素或一个独立的元素。在SOAP中,soap:Envelope, soap:Body和 soap:Header 是唯一的三个结构元素。它们的基本关系由下列XML Schema所描述:

<schema targetNamespace=‘urn:schemas-xmlsoap-org:soap.v1‘> <element name=‘Envelope‘> <type> <element name=‘Header‘ type=‘Header‘ minOccurs=‘0‘ /> <element name=‘Body‘ type=‘Body‘ minOccurs=‘1‘ /> </type> </element> </schema>

在SOAP元素的四种类型中,除了结构元素外都被用作表达类型的实例或对一个类型实例的引用。

根元素是显著的元素,它是soap:Body 或是 soap:Header的直接的子元素。其中soap: Body只有一个根元素,它表达调用、响应或错误对象。这个根元素必须是soap:Body的第一个子元素,它的标记名和域名URI必须与HTTP SOAPMethodName头或在错误消息情况下的soap:Fault相对应。而soap:Header元素有多个根元素,与消息相联系的每个头扩展对应一个。这些根元素必须是soap:Header的直接子元素,它们的标记名和名域URI表示当前存在扩展数据的类型。

存取元素被用作表达类型的域、属性或数据成员。一个给定类型的域在它的SOAP表达将只有一个存取元素。存取元素的标记名对应于类型的域名。考虑下列Java 类定义:

package com.bofsoap.IBank; public class adjustment { public int account ; public float amount ; }

在一个SOAP消息中被序列化的实例如下所示:

<t:adjustment xmlns:t=‘urn:develop-com:java:com.bofsoap.IBank‘> <account>3514</account> <amount>100.0</amount> </t:adjustment>

SOAP协议初级指南(8)

时间:2010-12-10

在这个例子中,存取元素account和amount被称着简单存取元素,因为它们访问对应于在W3C XML Schema规范 (见 http://www.w3.org/TR/XMLSchema-2) 的Part 2中定义的原始数据类型的值。这个规范指定了字符串,数值,日期等数据类型的名字和表达方式以及使用一个新的模式定义中的<datatype>结构来定义新的原始类型的机制。

对引用简单类型的存取元素,元素值被简单地编码为直接在存取元素下的字符数据,如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号