WSDL详解

WSDL详解原文链接 WebService 中的 WSDL 详解有人在 WebService 开发的时候 特别是和第三方有接口的时候 走的是 SOAP 协议 然后用户 或后台 给你一个 WSDL 文件 或网址 说按照上面的进行适配 这时就要对 WebService 的 WSDL 有一定的理解 本文将对 WSDL WebService 描述语言 进行详细总结 WSDL WebServicesD

原文链接:WebService中的WSDL详解

一.WSDL的基本概念

WSDL详解

二.WSDL的基本结构详解

下面通过一份wsdl文档,来详细解读WSDL结构:

 
   
   
    
     
      
       
        
         
        
       
      
      
       
        
         
        
       
      
     
    
    
     
    
    
     
    
    
     
      
      
     
    
    
     
     
      
      
       
      
      
       
      
     
    
    
     
      
     
    
  

(一) definitions元素

所有的WSDL文档的根元素均是definitions元素。该元素封装了整个文档,同时通过其name提供了一个WSDL文档。除了提供一个命名空间(targetNamespace)外,该元素没有其他作用,故不作详细描述

(二)types元素

WSDL采用了W3C XML模式内置类型作为其基本类型系统。types元素用作一个容器,用于定义XML模式内置类型中没有描述的各种数据类型(不太明白:XML模式内置类型中没有描述的各种数据类型)。当声明消息部分的有效时,消息定义使用了在types元素中定义的数据类型和元素。在本文的WSDL文档中的types定义:

 
   
    
     
      
       
        
       
      
     
     
      
       
        
       
      
     
    
  

上面是数据定义部分,该部分定义了两个元素,一个是sayHello,一个是sayHelloResponse: 

sayHello:定义了一个复杂类型,仅仅包含一个简单的字符串,将来用来描述操作的参入传入部分; 

sayHelloResponse:定义了一个复杂类型,仅仅包含一个简单的字符串,将来用来描述操作的返回值; 

这里sayHelloResponse是和sayHello相关的,sayHello相对于一个方法,里面的: type=”xsd:string”,name=”name”,是确定传入name的参数是String类型的,而sayHelloResponse中的 name=”return” type=”xsd:string” 是确定方法sayHello(String name)返回的类型是String类型的。

(三)import元素

 
  

(四)message元素

 message元素描述了Web服务使用消息的有效负载。message元素可以描述输出或者接受消息的有效负载;还可以描述SOAP文件头和错误detail元素的内容。定义message元素的方式取决于使用RPC样式还是文档样式的消息传递。在本文中的message元素的定义,本文档使用了采用文档样式的消息传递:

 
   
    
   
   
    
  

该部分是消息格式的抽象定义:定义了两个消息sayHelloResponse和sayHelloRequest:

1.sayHelloRequest:

sayHello操作的请求消息格式,由一个消息片断组成,名字为parameters,元素是我们前面定义的types中的元素;

2.sayHelloResponse:

sayHello操作的响应消息格式,由一个消息片断组成,名字为parameters,元素是我们前面定义的types中的元素;如果采用RPC样式的消息传递,只需要将文档中的element元素修改为type即可(??)。

(五)portType元素

portType元素定义了Web服务的抽象接口。该接口有点类似Java的接口,都是定义了一个抽象类型和方法,没有定义实现。在WSDL中,portType元素是由binding和service元素来实现的,这两个元素用来说明Web服务实现使用的Internet协议、编码方案以及Internet地址。 

一个portType中可以定义多个operation,一个operation可以看作是一个方法,本文中WSDL文档的定义:

 
   
    
     
     
    
  

(六)binding

binding元素将一个抽象portType映射到一组具体协议(SOAO和HTTP)、消息传递样式、编码样式。通常binding元素与协议专有的元素和在一起使用,本文中的例子:

 
   
    
    
     
     
      
     
     
      
     
    
  

这部分将服务访问点的抽象定义与SOAP、HTTP绑定,描述如何通过SOAP/HTTP来访问按照前面描述的访问入口点类型部署的访问入口。 其中规定了在具体SOAP调用时,应当使用的soapAction是”xxx”,这个Action在WebService代码调用中是很重要的。具体的使用需要参考特定协议定义的元素。

(七)service元素和port元素

service元素包含一个或者多个port元素,其中每个port元素表示一个不同的Web服务。port元素将URL赋给一个特定的binding,甚至可以使两个或者多个port元素将不同的URL赋值给相同的binding。

文档中的例子:

 
   
    
     
    
  

对于这个WSDL文档的学习,第一次看是感觉非常陌生的,而且里面元素又多,学习的话先是要了解外层结构代表的意义和作用,然后理解里面的元素的意义和作用,有些元素作用不大,有些元素又是很关联的,有些元素是比较重要的。 

WSDL图解: 

WSDL详解

WSDL详解

共勉:没有绝望的处境,只有对处境绝望的人。

资源:

https://www.w3.org/TR/wsdl.html

http://staff.ustc.edu.cn/~shizhu/DotNet/WSDLxj.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200278.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:10
下一篇 2026年3月20日 上午11:10


相关推荐

  • JavaScript实现哈希表数据结构[通俗易懂]

    一、简单说明1、JavaScript是没有哈希表数据结构的,那么当我们需要用到类似哈希表这样的键值对数据结构时怎么办?答案就是自己实现一个,我们可以利用JavaScript的一些特性来实现自己的哈希表数据结构。2、首先,哈希表是一种键值对数据结构,键是唯一的,这个特征跟JavaScript的Object对象有点类似,Object对象的属性是唯一的,属性和值的映射就像是键值对一样,那么我们可以用一个…

    2022年4月9日
    65
  • java argb 转rgb_java-如何在android中将RGB转换为十六进制颜色…

    java argb 转rgb_java-如何在android中将RGB转换为十六进制颜色…这个问题已经在这里有了答案 gt ConvertRGBAv 2 个如何将 ARGB 颜色转换为十六进制颜色 我的数据库中有 ARGB 颜色 我使用 JSON 格式的 Web 服务进行检索 我想在文本字段 TAG DIFF P

    2026年3月17日
    2
  • 从零部署你的24小时AI管家:OpenClaw完整实战指南(附踩坑记录)

    从零部署你的24小时AI管家:OpenClaw完整实战指南(附踩坑记录)

    2026年3月13日
    2
  • 圆柱体积立方公式怎样计算_圆台体积公式

    圆柱体积立方公式怎样计算_圆台体积公式圆柱体积计算公式计算方法及例题圆柱体积公式是用于计算圆柱体体积的公式。圆柱体积=πr²h=s底h。圆周率(π)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数。1圆柱体积公式圆柱体积v=πr²h=sh(S是底面积,h是高)π是圆周率,一般取3.14r是圆柱底面半径h为圆柱的高还可以是v=1/2ch×r侧面积的一半×半径圆周率(π)是圆的周长与直径的比值,一般用…

    2026年2月1日
    5
  • san交换机保存配置_交换机是一种什么设备

    san交换机保存配置_交换机是一种什么设备场景:1、两台服务器ESXi1,ESXi22、两台SAN交换机FC1,FC23、4台SAN存储:store1and2,store3and4:其中1和2,3和4分别做了级联,12和34之间做了双活。网络拓扑如图FC交换机1–创建zonezonecreate”Stor1_A_H2_GSJ_ESXI1_P0″,”1,8;2,12″ :做端口绑定,将

    2025年8月6日
    3
  • 递归和迭代的对比

    递归和迭代的对比递归和迭代的对比递归迭代特点递归程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小递…

    2022年5月3日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号