恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯:
一、WSDL概述
WebServices Description Language (WSDL Web服务语言)是一个用于精确描述Web Service的文档格式。
二、WSDL基本结构
WSDL文档是一个遵循WSDL XML模式的XML文档(文档实例);类似于:SOAP文档是一个遵循SOAP XML模式的XML文档(文档实例);
一个WSDL文档的根元素是definitions元素,WSDL文档包含7个重要的元素:types, import, message, portType, operations, binding和service元素
三、WSDL声明
3.1 XML声明
xml version="1.0" encoding="UTF-8"?>
WSDL的声明必须定义成使用:UTF-8 或者UTF-16 编码。
3.2 definition元素
所有WSDL文档的根元素都是definition元素。
<definitions name="BookQuoteWS"
targetNamespace="http://www.Monson-Haefel.com/jwsbook/BookQuote"
xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote"
xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/">
definition元素中一般包括若干个XML命名空间;
http://schemas.xmlsoap.org/wsdl/是默认的命名空间,这样就可以不用显式地定义每一个WSDL元素的命名空间了,例如: …;文档中所有的元素缺省应该属于这个命名空间。
definition元素的的一个属性是name,此属性不重要可以没有;
定义了targetNamespace命名空间,它为在模式中显式创建的所有新类型均声明了XML命名空间,而且上面的例子中赋予了mh前缀。
<part name="isbn" type="xsd:string" />
message>
<part name="price" type="xsd:float" />
message>
<operation name="getBookPrice">
<input name="isbn" message="mh:GetBookPriceRequest"/>
<output name="price" message="mh:GetBookPriceResponse"/>
operation>
portType>
四、WSDL抽象接口
Message、portType和operation元素用于描述Web服务的抽象接口,相当于JAVA或者C++中编程中的类的接口。其中 portType相当于类接口的名称;operation相当于接口中包含的函数,message相当于函数的参数和返回值。