WebService 之 WSDL文件 讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WebService 之 WSDL文件讲解
恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯:
一、WSDL概述
WebServices Description Language (WSDL Web服务语言)是一个用于精确描述Web Service 的文档格式。
WSDL非常适合于用作代码生成器,它能够读取WSDL文档,并且可以为访问Web服务生成一个程序化的接口,大多数软件供应商和主要的标准机构(包括 W3C、WS-I和OASIS)都支持WSDL。例如:JAX-RPC provider(例如:BEA Weblogic)通过API用WSDL生成相应的占位程序;IBM WebSphere、以及Apache Axis都有自己的工具生成相关的代码。下图是一个例子:
上面的例子JAX-RPC通过读取WSDL文档,创建JAX-RPC RMI接口(endpoint接口)和实现此接口的网络占位程序(stub)。客户端程序通过RMI接口,Stub和Web Service服务端交换SAOP消息。
二、WSDL基本结构
WSDL文档是一个遵循WSDL XML模式的XML文档(文档实例);类似于:SOAP文档是一个遵循SOAP XML模式的XML文档(文档实例);
一个WSDL文档的根元素是definitions元素,WSDL文档包含7个重要的元素:types, import, message, portType, operations, binding和service元素。
三、WSDL声明
3.1 XML声明
WSDL的声明必须定义成使用:UTF-8 或者UTF-16 编码。
3.2 definition元素
所有WSDL文档的根元素都是definition元素。
targetNamespace="/jwsbook/BookQuote" xmlns:mh="/jwsbook/BookQuote" xmlns:soapbind="/wsdl/soap/" xmlns:xsd="/2001/XMLSchema" xmlns="/wsdl/"> definition元素中一般包括若干个XML命名空间; /wsdl/是默认的命名空间,这样就可以不用显式地定义每一个WSDL元素的命名空间了,例如: definition元素的的一个属性是name,此属性不重要可以没有; 定义了targetNamespace命名空间,它为在模式中显式创建的所有新类型均声明了XML命名空间,而且上面的例子中赋予了mh前缀。 上面的例子中:message元素利用name属性指定了标签(例如:GetBookPriceRequest),这些标签会自动使用targetNamespace的命名空间,标签了的messages元素通常被称为定义。 文档中的其他元素用标签和命名空间前缀去应用定义,例如上面的例子中:input元素是使用mh:GetBookPriceRequest来引用标签GetBookPriceRequest。 3.3 Types元素 Types元素用作一个容器,定义了自定义的特殊数据类型,在声明消息部分(有效负载)的时候,messages定义使用了types元素中定义的数据类型与元素。 targetNamespace="/jwsbook/BookQuote" xmlns:mh="/jwsbook/BookQuote" xmlns:soapbind="/wsdl/soap/" xmlns:xsd="/2001/XMLSchema" xmlns="/wsdl/">