前端之家收集整理的这篇文章主要介绍了
手写wsdl文件,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
WSDL(web服务描述语言 Web Service Description Language)是一种基于XML的语言,它为Web服务与外部世界之间提供了一个合约。解决了以下两个问题:1.如何调用Web服务;2.想从Web服务器得到什么响应。 一个WSDL文件的开头有一个<definitions>根标签,定义了用到的命名空间。 <wsdl:definitions xmlns:comm="http://new.webservice.namespace" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://new.webservice.namespace"> </definitions> 其中xmlns:comm="http://new.webservice.namespace" 和targetNamespace="http://new.webservice.namespace"必须保持一致。前缀名comm可修改为其他值。 根标签下面有五个部分的内容:类型定义、消息定义、端口定义、绑定和服务 1、类型定义,这部分内容包含在wsdl:types标签中,用于定义消息中需要用到的数据类型,可以使用W3C XML模式内置类型,也可使用自己定义派生的类型,自定义派生类型可在wsdl文件中定义也可放在相应的xsd文件中,要使用相应的xsd文件须在wsdl:types标签下的xs:schema中添加 xmlns:dt="http://schemas.xmlsoap.org/ws/2005/04/discovery" <xs:import namespace="http://schemas.xmlsoap.org/ws/2005/04/discovery" schemaLocation="commlib.xsd"/> 其中dt和"http://schemas.xmlsoap.org/ws/2005/04/discovery"均可修改,保持相应的一致即可,schemaLocation指出xsd文件所在的位置。xsd文件的格式后面再讲。 <wsdl:types> <xs:schema targetNamespace="http://new.webservice.namespace" xmlns:dt="http://schemas.xmlsoap.org/ws/2005/04/discovery" elementFormDefault="qualified"> <xs:import namespace="http://schemas.xmlsoap.org/ws/2005/04/discovery" schemaLocation="commlib.xsd"/> <xs:element name="RequestProbe" type="dt:RequestProbeType"/> <xs:element name="ResponseProbe" type="dt:ResponseProbeType"/> </xs:schema> </wsdl:types> 2、消息定义,用于定义接口的传入消息和传出消息。消息的定义放在wsdl:message中,name属性指定消息的名字,后面端口定义的时候会用到。每个wsdl:part标签对应一个参数。 <wsdl:message name="MessageRequestProbe"> <wsdl:part name="parameters" element="comm:RequestProbe"/> </wsdl:message> <wsdl:message name="MessageResponseProbe"> <wsdl:part name="parameters" element="comm:ResponseProbe"/> </wsdl:message> 3、端口定义,用于定义服务提供的接口,所有接口均须在wsdl:portType中定义,name用于指定接口的名字,后面绑定需要用到。wsdl:operation标签name指定接口的名称,输入输出在wsdl:input和wsdl:output标签中定义,使用wsdl:message name的值。 <wsdl:portType name="PortTypeProbe"> <wsdl:operation name="OperationProbe"> <wsdl:input message="comm:MessageRequestProbe"/> <wsdl:output message="comm:MessageResponseProbe"/> </wsdl:operation> </wsdl:portType> 4、绑定,用于绑定接口和协议,所有绑定关系都得在wsdl:binding标签下定义,name属性指定该绑定的名称,后面定义服务时会用到。type需要设置为wsdl:portType标签中name的值。使用SOAP协议的话,还会有soap:binding标签,soap:binding有两个属性,style和transport,transport的值是http://schemas.xmlsoap.org/soap/http毫无疑问,style有两个取值,rpc和document,rpc表示一个消息,消息里只有一个方法名和参数,使用document,可以传递复杂文档。 每一组绑定关系都有一个wsdl:operation标签,该标签的name值与wsdl:portType下的wsdl:operation name值相同。属性soapAction用于指定soap动作的地址和调用方式。soapAction的值为targetNamesapce属性指定的命名空间和相应的接口名字。接口的输入和输出绑定由wsdl:input和wsdl:output绑定,这两个标签都有子标签soap:body,其use属性的取值有两种:encoded和literal。一般来说,encoded和rpc,literal和document搭配使用 <wsdl:binding name="BindProbe" type="comm:PortTypeProbe"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="OperationProbe"> <soap:operation soapAction="http://new.webservice.namespace/OperationProbe"/> <wsdl:input> <soap:body parts="parameters" use="literal"/> </wsdl:input> <wsdl:output> <soap:body parts="parameters" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> 5、服务,主要用于指定上面所定义的绑定的服务地址。在根标签wsdl:service下,可以有许多wsdl:port标签,其binding属性需要指定为上面定义好的wsdl:binding标签的name属性值,wsdl:port标签下有一个soap:address,其location属性为提供WebService服务的文件地址。 原文链接:https://www.f2er.com/xml/296242.html