我们在开发webservice的时候,经常会看到有些生成的wsdl文件中包含了<soap:header>节点元素,那么怎样在wsdl
文件中添加<soap:header>节点元素。
我们知道开发webservice服务其实有两种方式cxf发布有两种方式,一种Object first,也就是普通的方式,还有一种是
WSDLfirst,就是你自己编写WSDL文档然后发布。如果需要在生成的wsdl文件中包含soap:header元素,那么我们只
能采用第二种方式来开发webservice服务。
我将采用的是http://liuwuhen.iteye.com/blog/1666189 该博客中所产生的wsdl文件的基础,进行soap:header元
素。
具体实现的步骤如下:
1.声明元素。
<xsd:element name="header" type="tns:headertype"/>
<xsd:complexType name="headertype">
<xsd:sequence>
<xsd:element name="spPassword" type="xsd:string" />
<xsd:element name="spId" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
我们可以这样理解,其实xsd:element就相当于我们一个类中所对应的属性, xsd:complexType 可以理解为属性所对应
类型。
2. 在message节点处引用该头部元素
<wsdl:message name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters"/>
<wsdl:part element="tns:header" name="header_info"/>
</wsdl:message>
其中 element="tns:header"引用的是上面声明的元素。
3.在wsdl:binding中的wsdl:operation处添加<soap:header>元素
<wsdl:operation name="sayHello">
<soap:operation soapAction="" style="document" />
<wsdl:input name="sayHello">
<soap:header message="tns:sayHello"
part="header_info" use="literal" wsdl:required="true"/>
<soap:body use="literal" parts="sayHello"/>
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
其中part引用是message部分声明的节点名称,use=literal表示的是编码的方式.
4.修改发布服务的cxf配置文件。
<jaxws:endpoint id="helloWorld" implementor="com.liuwuhen.cxf.IHelloWorldImpl"
address="/sayHello" wsdlLocation="WEB-INF/HelloWorld.wsdl">
wsdlLocation :即指定wsdl文件所在的路径。
通上述的三个步骤即可完成wsdl文件中添加soap:header节点元素,应该很简单。
分享到:
相关推荐
- **信封(Envelope)**:这是SOAP消息的最外层元素,用于标识该消息为SOAP消息。 - **头部(Header)**:可选部分,用于包含处理消息所需的信息,如认证、事务处理等。 - **主体(Body)**:必须部分,包含了实际...
SOAP(Simple Object ...总的来说,了解SOAP协议、如何在Java中实现SOAP请求以及解析WSDL文件是Web服务开发的关键技能。通过实践和学习这些知识点,开发者能够创建和消费跨平台的Web服务,实现不同系统的互操作性。
在WSDL中,Header通常通过SOAP扩展(如wsdl:header)来描述,它们可以是可选的或强制的,并且可以关联到特定的操作。 对于包含Header的WSDL,开发者需要确保正确配置Header部分,以便服务能够识别和处理它们。这...
为了解决Delphi中SOAP Header的问题,可以采取以下步骤来自定义Header结构: 1. **定义新的Header类**:首先,需要定义一个新的类,该类继承自`TSOAPHeader`。在这个新类中,应该声明和实现所有必需的属性,如`...
在本实例中,我们将探讨三个关键概念:WSDL(Web Services Description Language)、SOAP(Simple Object Access Protocol)以及如何通过Demo来理解这些概念并实现接口。 **WSDL(Web Services Description ...
实际项目中,可能需要根据业务需求创建自定义的SOAP消息头,如添加安全认证、会话管理等。这通常涉及到对XML文档的解析和操作,以及与服务端交互的逻辑处理。 总结,理解和实现SOAP消息头,无论是隐式还是显式,...
Header中的元素是可扩展的,可以包含自定义的头信息。它由`<soap:Header>`和`</soap:Header>`包围。 3. **SOAP Body**:消息的主要内容,包含了实际的服务调用和响应。Body中的元素通常是一个单一的XML结构,代表了...
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化的信息。SOAP允许应用程序通过HTTP、SMTP等网络协议进行通信,使得不同平台上的软件能够相互通信。以下是对SOAP编程...
本教程将深入探讨SOAP的基础知识,包括其工作原理、消息结构、WSDL规范以及如何创建和调用SOAP Web服务。 ### 1. SOAP工作原理 SOAP使用HTTP或HTTPS作为传输协议,确保了跨平台的兼容性和安全性。它通过XML格式...
- **Envelope**:这是SOAP消息的根元素,定义了消息的边界,并指示接收者如何处理该消息。它通常包含`<soap:Envelope>`标签。 - **Header**:可选部分,用于传递与消息处理相关的附加信息,如认证、路由指令等。它...
XML元素`<soap:Envelope>`、`<soap:Header>`和`<soap:Body>`是SOAP消息的基本结构。例如: ```xml <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"> <soap:Header /> <soap:Body> ...
以上的元素都在 SOAP 的命名空间 http://www.w3.org/2001/12/soap-envelope 中声明; SOAP 的语法规则: * SOAP 消息必须用 XML 来编码 * SOAP 消息必须使用 SOAP Envelope 命名空间 * SOAP 消息必须使用 SOAP ...
在提供的压缩包文件中,`05_soap`可能包含关于如何创建和发送SOAP消息的示例代码,`06_wsdl_client`和`05_soap_client`可能是SOAP客户端的实现,`06_wsdl`可能是一个或多个WSDL文档,用于描述服务接口。通过这些文件...
2. **设置SOAP Envelope和Header**:根据WebService的WSDL(Web Service Description Language)文档,确定SOAP Envelope的格式,并根据需求添加Header信息,如认证Token或SOAPAction。 3. **发送HTTP请求**:封装...
`<soap:Header>` 如果存在,它必须是 `Envelope` 的直接子元素。 3. **Body元素**:这是SOAP消息的核心,包含了实际的业务数据或服务调用。`<soap:Body>` 必须存在,而且它的所有子元素都是服务调用或响应的具体...
SOAP消息通常描述在Web服务描述语言(WSDL)中,用于定义服务接口、消息格式和绑定。 6. **SOAP与TCP/IP转换**: 在这个例子中,可能涉及到将SOAP消息包装在TCP/IP数据包中,以便直接通过TCP/IP进行通信,这通常...
4. **Namespace(命名空间)**:SOAP消息中的元素通常会引用命名空间来避免元素名称冲突。这些命名空间通过`xmlns`属性定义。 例如,一个简单的SOAP请求可能如下所示: ```xml <soap:Envelope xmlns:soap=...
标题中的"soap.rar_SOA_SOAP_java_java_soap_soap"揭示了主要的主题是SOAP(简单对象访问协议)技术,它在服务导向架构(SOA)中扮演着关键角色,并与Java编程语言紧密关联。SOAP是一种基于XML的协议,用于在分布式...
WSDL文件通常包含以下几个关键元素: 1. **服务(Service)**:定义服务的端点,也就是客户端可以与之交互的实际网络地址。 2. **绑定(Binding)**:定义服务如何被访问,包括使用的协议(如HTTP、SOAP over HTTP...