1. <definitions/>

这部分在基础篇里已经介绍,主要说明引用了哪些schema以及schema的位置等,可以看下基础篇的介绍,SayHello的Demo这部分内容如下:

  1. <wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  2. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.service.server.ws.devins.com/"
  3. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http"
  4. xmlns:ns1="http://service.server.ws.devins.com/" name="SayHelloImplService"
  5. targetNamespace="http://impl.service.server.ws.devins.com/">

2. <types/>

<types> 元素定义 web service 使用的数据类型,为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型

  1.          <!--
  2. types
  3. schema:约束xml格式
  4. element:用来指定xml中的标签
  5. <sayHello></sayhello>
  6. <sayHelloResponse></sayHelloResponse>
  7. complexType:说明是一个复合类型
  8. 请求
  9. <sayHello>
  10. <arg0>string</arg0>
  11. </sayhello>
  12. 响应
  13. <sayHelloResponse>
  14. <return>string</return>
  15. </sayHelloResponse>
  16.  
  17.    回看下demo的请求与响应的核心内容
  18. <q0:sayHello>
  19. <arg0>devins</arg0>
  20. </q0:sayHello>
  21.  
  22. <ns2:sayHelloResponse">
  23. <return>Hello: devins</return>
  24. </ns2:sayHelloResponse>
  25.  
  26. -->
  27. <wsdl:types>
  28. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  29. xmlns:tns="http://service.server.ws.devins.com/" elementFormDefault="unqualified"
  30. targetNamespace="http://service.server.ws.devins.com/" version="1.0">
  31. <xs:element name="sayHello" type="tns:sayHello" />
  32. <xs:element name="sayHelloResponse" type="tns:sayHelloResponse" />
  33. <xs:complexType name="sayHello">
  34. <xs:sequence>
  35. <xs:element minOccurs="" name="arg0" type="xs:string" />
  36. </xs:sequence>
  37. </xs:complexType>
  38. <xs:complexType name="sayHelloResponse">
  39. <xs:sequence>
  40. <xs:element minOccurs="" name="return" type="xs:string" />
  41. </xs:sequence>
  42. </xs:complexType>
  43. </xs:schema>
  44. </wsdl:types>

3. <message/>

<message> 元素定义一个操作的数据元素,每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。

  1.         <!--
  2. message:用来定义soap消息结构
  3. part:部分/组成的意思
  4. 实际上引用的就是上面schema中的约束格式
  5. -->
  6. <wsdl:message name="sayHelloResponse">
  7. <wsdl:part element="ns1:sayHelloResponse" name="parameters" />
  8. </wsdl:message>
  9. <wsdl:message name="sayHello">
  10. <wsdl:part element="ns1:sayHello" name="parameters" />
  11. </wsdl:message>

4. <portType/>

       <portType> 元素是最重要的 WSDL 元素,它可描述一个 web service、可被执行的操作,以及相关的消息,可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

  1.         <!--
  2. portType:用来指定服务器端的SEI(接口)
  3. operation:表示操作/行为,即SEI中定义的方法
  4. input:方法sayHello的输入
  5. output:方法sayHello的输出
  6. 输入输出引用的是上面message的定义
  7. -->
  8. <wsdl:portType name="ISayHello">
  9. <wsdl:operation name="sayHello">
  10. <wsdl:input message="ns1:sayHello" name="sayHello" />
  11. <wsdl:output message="ns1:sayHelloResponse" name="sayHelloResponse" />
  12. </wsdl:operation>
  13. </wsdl:portType>

5. <binding/>

<binding> 元素为每个端口定义消息格式和协议细节。

  1. <!--
  2. binding:用来指定SEI的实现类
  3. type属性:引用<portType>定义
  4. <soap:binding style="document">:表示传输的一个document (xml)
  5. <input><output>与上节说的相同
  6. <soap:body use="literal" />:表示body传输采用文本即xml格式的文本
  7. -->
  8. <wsdl:binding name="SayHelloImplServiceSoapBinding" type="ns1:ISayHello">
  9. <soap:binding style="document"
  10. transport="http://schemas.xmlsoap.org/soap/http" />
  11. <wsdl:operation name="sayHello">
  12. <soap:operation soapAction="" style="document" />
  13. <wsdl:input name="sayHello">
  14. <soap:body use="literal" />
  15. </wsdl:input>
  16. <wsdl:output name="sayHelloResponse">
  17. <soap:body use="literal" />
  18. </wsdl:output>
  19. </wsdl:operation>
  20. </wsdl:binding>

6. <service>

  1. <!--
  2. service:相同于webservice容器,也可理解为一个工厂
  3. name:用于指定客户端的容器类/工厂类,客户端代码从此类开始
  4. port:用来指定服务器端的一个入口(对应SEI的实现类)
  5. port binding:引用上面定义的
  6. port name:容器通过这个方法获得实现类
  7. address:客户端真正用于请求的地址
  8.  
  9. 回想我们的demo:
  10. SayHelloImplService factory = new SayHelloImplService();
  11. SayHelloImpl sayHelloImpl = factory.getSayHelloImplPort();
  12. -->
  13. <wsdl:service name="SayHelloImplService">
  14. <wsdl:port binding="tns:SayHelloImplServiceSoapBinding"
  15. name="SayHelloImplPort">
  16. <soap:address location="http://132.122.239.74:8089/ws/sayhello" />
  17. </wsdl:port>
  18. </wsdl:service>

7. 总结

转自:https://blog.csdn.net/posonrick/article/details/45580355?utm_source=blogxgwz1

Webservice学习之WSDL详解的更多相关文章

  1. WebService中的WSDL详解 及jmeter测试

    首先简单讲解一下什么是wsdl.        一个WSDL文档通常包含8个重要的元素,即definitions.types.import.message.portType.operation.bin ...

  2. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

    http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...

  3. [转]iOS学习之UINavigationController详解与使用(三)ToolBar

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...

  4. [转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

    转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加U ...

  5. 各大公司广泛使用的在线学习算法FTRL详解

    各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...

  6. 跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量 * This example program demonstrates the basic usage of a fuzz ...

  7. 跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距

    跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距 This example program demonstrates the basic usage of a circular meas ...

  8. 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...

  9. 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

    跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手-打开新的Image Acquisitio ...

随机推荐

  1. JS膏集05

    JS膏集05 1.复习 闭包内的函数也可以使用参数 闭包的建议写法 ) 2.浅拷贝 相当于把一个对象中的所有的内容复制一份给另一个对象.直接复制. 或者说,就是把一个对象的地址给了另一个对象,它们指向 ...

  2. Hibernate(12)_基于主键的双向1对1

    一.基于主键的双向1对1 1.介绍: 基于主键的映射策略:指一端的主键生成器使用 foreign 策略,表明根据"对方"的主键来生成自己的主键,自己并不能独立生成主键. <p ...

  3. 06、action操作开发实战

    1.reduce: 2.collect: 3.count: 4.take: 5.saveAsTextFile: 6.countByKey: 7.foreach: package sparkcore.j ...

  4. linux下的EDA——VCS使用

    原帖地址:https://blog.csdn.net/moon9999/article/details/75283926 在Linux下对verilogHDL进行功能仿真时非常必要的,下面提供两种常见 ...

  5. wordclock中文模式快一个小时怎么调整

    wordclock屏幕保护,设置为中文模式,显示的时间比系统时间要快一个小时,其实软件自带的配置文件可以设置调整到正常时间……   工具/原料   wordclock 方法/步骤     桌面上右键菜 ...

  6. 百度富文本编辑器整合fastdfs文件服务器上传

    技术:springboot+maven+ueditor   概述 百度富文本整合fastdfs文件服务器上传 详细 代码下载:http://www.demodashi.com/demo/15008.h ...

  7. 分析轮子(四)- 我也玩一把 Serializable.java

    前言:在写 分析轮子(一)-ArrayList.java 的时候曾经下过一个结论 “实现Serializable接口,表示ArrayList是可序列化的”,这个结论是以往学习的经验所得,并且平时在编程 ...

  8. securecrt8.1破解版安装与注册机的使用方法

    转自:https://blog.csdn.net/sun897827804/article/details/78532157?locationNum=9&fps=1 SecureCRT是一款用 ...

  9. redis学习 (key)键,Python操作redis 键 (二)

    # -*- coding: utf-8 -*- import redis #这个redis 连接不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. delete ...

  10. MKMapView:确定区域更改是否来自用户交互

    参见: http://www.b2cloud.com.au/tutorial/mkmapview-determining-whether-region-change-is-from-user-inte ...