`

WSDL文件简介

阅读更多

 

转自:http://wocclyl.blog.163.com/blog/static/46223504200843054022716/

 

 

本文介绍了如何编写一个简单的WSDL文件!

 

 首先明确的一点是WSDL现在有两个版本,分别为WSDL 1.1和WSDL 2.0,W3C的官方文档地址分别为:
Web Services Descrīption Language (WSDL) 1.1
W3C Note 15 March 2001
Web Services Descrīption Language (WSDL) Version 2.0 Part 0: Primer
W3C Working Draft 26 March 2007
 
其中很多应用还是以版本1.1为基础实现。下面是2.0与1.1的区别:
Adding further semantics to the descrīption language. 
Removal of message constructs.
No support for operator overloading.
PortTypes renamed to interfaces.
Ports renamed to endpoints.
 
下面是一些常见的命名空间:
prefix         namespace URI
wsdl           http://schemas.xmlsoap.org/wsdl/
soap          http://schemas.xmlsoap.org/wsdl/soap/
http           http://schemas.xmlsoap.org/wsdl/http/
mime          http://schemas.xmlsoap.org/wsdl/mime/
soapenc     http://schemas.xmlsoap.org/soap/encoding/
soapenv     http://schemas.xmlsoap.org/soap/envelope/
xsi            http://www.w3.org/2000/10/XMLSchema-instance
xsd            http://www.w3.org/2000/10/XMLSchema
tns            (various)
 
对于WSDL规范,可以参考以上两个官方文档,本文主要介绍如何编写WSDL文档(其实官方文档中已经给出了很多例子和方法,这里只是简单的翻译与重复介绍)。
 
下面举例说明如何编写WSDL文档:
我们做一个非常简单的加法运算服务:客户端传入SOAP请求消息,包含两个加数,然后在服务器端获取这两个加数,求和,然后返回给客户端。
请求消息和响应消息结构分别如下(有效负载部分,外层的SOAP封装AXIS2会自动添加上去):
request:
<SumRequest>
    <First>15</First>
    <Second>16</Second>
</SumRequest>
 
response:
<SumResponse>
    <Result>31</Result>
</SumResponse>
 
1.首先需要进行定义的就是soap消息的数据类型,无疑,这里需要定义两个复杂的数据类型:
SumRequest
SumResponse
它们分别包含有子元素First、Second和Result.
另外还需要定义一种异常,这里我们定义成为SumFault,比如传入的两个加数的和超出了xsd:int的范围时,抛出该异常。
(注意,很多代码生成器都会根据WSDL生成代码,将SumFault部分生成为后缀为Exception的异常类。)
 
2.定义数据类型的目的是为传入传出消息做准备的,传入传出消息的定义方式使用message元素来定义。
我们定义三种消息:SumRequest,SumResponse以及SumFault,分别为请求消息,响应消息以及出错时的消息。
 
3.定义好了传入传出消息后,就要定义一个portType,该节点类型定义了主要的业务操作。
4.接着将定义SOAP绑定:
SumSoapBinding:为SumService端口类型所定义的操作和消息指定具体传输中所使用的消息格式和协议细节。绑定的方式为SOAP,传输方式为http,消息的格式为document。
5.定义Web服务:Web服务名为SumService。
6.本Web服务的操作为Sum操作。
7.端口为:为SumSoapBing绑定指定一个地址来定义服务访问点。
 
根据以上七个部分编写完成的WSDL文件如下:
 
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.zzl.org/Sum"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.zzl.org/Sum">
    <wsdl:documentation>
       The WSDL file of SumService.
    </wsdl:documentation>
    <wsdl:types>
       <wsdl:documentation>
           Data types that are used for request and response messages.
       </wsdl:documentation>
       <xsd:schema targetNamespace="http://www.zzl.org/Sum">
           <xsd:element name="SumRequest">
              <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="First" type="xsd:int" />
                     <xsd:element name="Second" type="xsd:int" />
                  </xsd:sequence>
              </xsd:complexType>
           </xsd:element>
           <xsd:element name="SumResponse">
              <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="Result" type="xsd:int" />
                  </xsd:sequence>
              </xsd:complexType>
           </xsd:element>
           <xsd:element name="SumFault">
              <xsd:complexType>
                  <xsd:sequence>
                     <xsd:element name="Code" type="xsd:string" />
                  </xsd:sequence>
              </xsd:complexType>
           </xsd:element>
       </xsd:schema>
    </wsdl:types>
    <wsdl:message name="SumRequest">
       <wsdl:documentation>
           The data that will be transmitted to the service.
       </wsdl:documentation>
       <wsdl:part element="tns:SumRequest" name="request" />
    </wsdl:message>
    <wsdl:message name="SumResponse">
       <wsdl:documentation>
           The data that will be returned to the client.
       </wsdl:documentation>
       <wsdl:part element="tns:SumResponse" name="response" />
    </wsdl:message>
 
    <wsdl:message name="SumFault">
       <wsdl:documentation>
           The fault that will be thrown when fault occurs.
       </wsdl:documentation>
       <wsdl:part name="axisFault" element="tns:SumFault" />
    </wsdl:message>
    <wsdl:portType name="SumService">
       <wsdl:documentation>
           The SumService contains the business operation.
       </wsdl:documentation>
       <wsdl:operation name="RevokeCert">
           <wsdl:documentation>
              The operation that do the business work.
           </wsdl:documentation>
           <wsdl:input message="tns:SumRequest" />
           <wsdl:output message="tns:SumResponse" />
           <wsdl:fault name="fault" message="tns:SumFault" />
       </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="SumSoapBinding" type="tns:SumService">
       <wsdl:documentation>
           The SumSoapBinding defines the SOAP message format and
           protocol details for Sum operation and messages defined by a
           RevokeService portType.
       </wsdl:documentation>
       <soap:binding style="document"
           transport="http://schemas.xmlsoap.org/soap/http" />
       <wsdl:operation name="Sum">
           <soap:operation soapAction="urn:Sum" />
           <wsdl:input>
              <soap:body use="literal" />
           </wsdl:input>
           <wsdl:output>
              <soap:body use="literal" />
           </wsdl:output>
           <wsdl:fault name="fault">
              <soap:fault use="literal" name="fault" />
           </wsdl:fault>
       </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="SumService">
       <wsdl:documentation>
           SumService provides the service of summing.
       </wsdl:documentation>
       <wsdl:port binding="tns:SumSoapBinding" name="SumSoapBinding">
           <wsdl:documentation>
              The port defines the endpoint by specifying a soap
              address for SumSoapBinding.
           </wsdl:documentation>
           <soap:address            location="http://www.zzl.org/ExampleService/services/SumService" />
       </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
 
服务器端和客户端的代码是根据WSDL文件编写出来的,这才是正确的过程,但是,在国内的软件开发过程,常常是先写代码,再根据代码生成WSDL文件,这是不正确的。

关于如何生成客户端与服务端代码,可以参考相应的框架,如Axis2和CXF等,这里不再介绍。
分享到:
评论

相关推荐

    WSDL文件简介-本文介绍了如何编写一个简单的WSDL文件,并根据WSDL文件编写服务器端和客户端代码,并发布Web Service服务的过程

    ### WSDL 文件简介 WSDL(Web Services Description Language)是一种基于 XML 的语言,用于描述网络服务的接口。本文将详细介绍如何编写一个简单的 WSDL 文件,以及如何根据该 WSDL 文件来编写服务器端与客户端的...

    onvif所有 wsdl文件

    标题提及的“onvif所有 wsdl文件”是指用于ONVIF协议开发的各种WSDL文件集合。这些文件是XML文档,详细定义了ONVIF服务的接口、消息格式以及如何通过SOAP(Simple Object Access Protocol)进行通信。开发者可以利用...

    SoapUI测试工具WSDL文件生成--个人总结

    ### SoapUI测试工具WSDL文件生成方法 #### 一、前言 在软件测试领域,SoapUI是一款非常流行的API测试工具,它支持多种协议(如SOAP、REST等),能够帮助测试人员快速创建测试案例,执行功能性和回归性测试。本文将...

    wsdl4j 解析wsdl 文件

    3. **获取定义(Definition)**:`Definition`对象是WSDL模型的根,可以通过`reader.readWSDL(filePath)`获取,其中`filePath`是WSDL文件的路径。 4. **遍历WSDL元素**:使用`Definition`对象,可以获取服务、绑定、...

    官网下载的所有wsdl文件

    【标题】:“官网下载的所有wsdl文件” 在IT领域,Web Service Definition Language(WS-DL)是一种XML格式的规范,用于定义Web服务的接口。它详细描述了服务提供者和消费者之间的交互方式,包括可用的操作、消息...

    把wsdl文件或地址转化成java代码工具

    【标题】:“把wsdl文件或地址转化成java代码工具” 在软件开发中,Web服务是一种通过网络(通常是HTTP)交换数据的方式。WSDL(Web Services Description Language)是描述Web服务的标准XML格式,它定义了服务的...

    WSDL.rar_C# 解析wsdl文件_WSDL_解析WSDL

    本项目“WSDL.rar”提供了一个C#编写的WSDL解析器,旨在帮助开发者更好地理解和操作WSDL文件。 首先,WSDL是一种XML文档,它详细描述了Web服务的接口,包括服务提供的操作、输入和输出消息的结构以及服务的位置。在...

    把wsdl文件转换成java类 使用wsdl2Java工具

    为了在Java环境中与这些Web服务交互,我们需要将WSDL文件转换为Java类,这就是`wsdl2java`工具的作用。 `wsdl2java`是Apache Axis项目的一部分,它是一个强大的工具,可以自动生成Java客户端和服务端代码,这些代码...

    Webservice的wsdl文件

    通过wsdl文件就可以通过客户端调用服务端的接口,可以使用Webservice的服务了

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    gsoap最新的wsdl文件

    在这个场景中,"gsoap最新的wsdl文件"是指使用gSOAP工具生成的,基于最新版本的WSDL规范的文件。 gSOAP是一个开源的C和C++库,用于开发SOAP(Simple Object Access Protocol)和Web服务。它能够从WSDL文件自动生成...

    onvif之wsdl文件(适于离线生成源码)

    在“onvif之wsdl文件(适于离线生成源码)”的主题中,我们主要关注的是如何使用WSDL文件来离线生成源码,这对于那些在没有互联网连接或需要确保代码安全性的环境下工作的开发者尤其重要。离线生成源码意味着开发者...

    Eclipse根据wsdl文件逆向生成webservice客户端项目源码

    本文将详细介绍如何在Eclipse环境中,利用WSDL文件逆向生成WebService客户端项目的源码。 首先,WSDL文件是一个XML格式的文档,它描述了Web服务的接口、操作、消息格式以及服务的位置。这个文件是服务提供者发布的...

    wsdl文件原公司超详细

    WSDL文件是Web服务的核心组成部分,它为开发者提供了服务的蓝图,使客户端应用程序能够理解如何与服务进行通信。 ### 1. WSDL 结构 一个WSDL文件通常由以下几个主要部分组成: - **文档声明**:包含XML命名空间和...

    MobileWebService.wsdl文件

    【MobileWebService.wsdl文件】是Web服务描述语言(Web Service Definition Language)的一种文件,用于定义Web服务的具体接口、消息格式以及通信协议。在本场景中,这个文件提供了一个查询手机号码的服务接口,允许...

    onvif的wsdl文件2016

    WSDL文件是用于定义Web服务接口的XML文档,它描述了服务提供的操作、消息格式以及如何通过网络调用这些服务。 在"onvif的wsdl文件2016"中,我们可以看到2016年版本的ONVIF服务定义。这个压缩包可能包含了多个WSDL...

    Onvif的wsdl文件的编译

    在本话题中,我们将深入探讨如何编译ONVIF的WSDL文件,以及如何使用gSOAP工具生成C++代码。 首先,让我们了解WSDL。WSDL是一种XML格式,用于描述Web服务及其接口。它定义了服务的位置、使用的消息交换格式以及如何...

    wsdl文件祥解

    WSDL文件是一种XML文档,它主要由两大部分组成:抽象定义和具体定义。这两部分分别负责定义服务接口和具体的实现细节。 - **抽象定义**:这部分不依赖于任何特定的编程语言或操作系统,而是专注于描述服务的接口。...

Global site tag (gtag.js) - Google Analytics