WSDL 简介

Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。为用户提供详细的接口说明书。

目录

WSDL 简介
WSDL 历史
WSDL 功能
WSDL 元素
WSDL 文档结构

<script type="text/javascript"></script>

WSDL 简介

  WSDL是Web Service的描述语言,用于描述Web Service的服务,接口绑定等

WSDL 历史

  在 2001 年 3 月,WSDL 1.1 被 IBM、 微软作为一个 W3C 纪录(W3C note)提交到有关 XML 协议的 W3C XML 活动,用于描述网络服务。(W3C 纪录仅供讨论。一项 W3C 纪录的发布并不代表它已被 W3C 或 W3C 团队亦或任何 W3C 成员认可。)在 2002 年 7 月,W3C 发布了第一个 WSDL 1.2 工作 草案

WSDL 功能

  怎样向别人介绍你的Web service有什么功能,以及每个 函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。

WSDL 元素

  WSDL 文件包含以下 元素:    Type:使用某种语法(如 XML  模式)的数据类型定义(string、int)    Message:要传递的数据    Part:消息参数    Operation:服务支持的操作的抽象描述    Port Type / Interface:一个或多个端点支持的操作的抽象集。此名称已更改,因此可能会遇到两者中的任何一个。    Binding:特定端口类型的具体协议和 数据格式规范    Port / Endpoint:绑定和网络地址的组合。此名称也已更改,因此可能会遇到两者中的任何一个。  Service:相关端点的集合,包括其关联的接口、操作、消息等。

WSDL 文档结构

  WSDL 文档是利用这些主要的元素来描述某个 web service 的:   元素 定义   web service 执行的操作   <message> web service 使用的消息   <types> web service 使用的数据类型   <binding> web service 使用的通信协议   一个 WSDL 文档的主要结构是类似这样的:   <definitions>   <types>   definition of types........   </types>   <message>   definition of a message....   </message>   <portType>   definition of a port.......   </portType>   <binding>   definition of a binding....   </binding>   </definitions>WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。   如需完整的语法概述,请访问 WSDL 语法 这一节。同样要记住,与服务交互所需的所有细节都位于其 WSDL 文件中。   ●WSDL支持的消息交换方式?   WSDL支持4种消息交换方式:   1)单向(One-way):服务端接收消息;   2)请求响应(Request-response):服务端点接收请求消息,然后发送响应消息;   3)要求应答(Solicit-response):服务访问端发送要求消息,然后接收应答消息。   4)通知(Notification):服务访问端点发送通知消息。

 

<script type="text/javascript"></script>

扩展阅读:

Class: Passport.php

Php代码   收藏代码
  1. class Passport {  
  2.   
  3.     const E_USERNAME_INVALID = 1;  
  4.   
  5.     public $username;  
  6.     public $passwd;  
  7.     public $emai;  
  8.     public $verifycode;  
  9.   
  10.     /** 
  11.      * user register service 
  12.      * 
  13.      * @param string $username 
  14.      * @param string $passwd 
  15.      * @param string $email 
  16.      * @param string $verifycode 
  17.      * 
  18.      * @return boolean 
  19.      */  
  20.     public function register($username$passwd$email$verifycode){  
  21.         // here is register code  
  22.         return $username"\n" .  
  23.                 $passwd . "\n" .  
  24.                 $email . "\n" .  
  25.                 $verifycode;  
  26.     }  
  27. }  

 

WSDL: PassportSerivice.wsdl

Xml代码   收藏代码
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!-- WSDL file generated by Zend Studio. -->  
  3. <definitions name="Passport" targetNamespace="urn:Passport"  
  4. xmlns:typens="urn:Passport"  
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
  6. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  
  7. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"  
  8. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"  
  9. xmlns="http://schemas.xmlsoap.org/wsdl/">  
  10.  <message name="register">  
  11.   <part name="username" type="xsd:string"/>  
  12.   <part name="passwd" type="xsd:string"/>  
  13.   <part name="email" type="xsd:string"/>  
  14.   <part name="verifycode" type="xsd:string"/>  
  15.  </message>  
  16.  <message name="registerResponse">  
  17.   <part name="registerReturn" type="xsd:string"/>  
  18.  </message>  
  19.  <portType name="PassportPortType">  
  20.   <operation name="register">  
  21.    <documentation>  
  22.     Enter description here...  
  23.    </documentation>  
  24.    <input message="typens:register"/>  
  25.    <output message="typens:registerResponse"/>  
  26.   </operation>  
  27.  </portType>  
  28.  <binding name="PassportBinding" type="typens:PassportPortType">  
  29.   <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>  
  30.   <operation name="register">  
  31.    <soap:operation soapAction="urn:PassportAction"/>  
  32.    <input>  
  33.     <soap:body namespace="urn:Passport" use="literal"/>  
  34.    </input>  
  35.    <output>  
  36.     <soap:body namespace="urn:Passport" use="literal"/>  
  37.    </output>  
  38.   </operation>  
  39.  </binding>  
  40.  <service name="PassportService">  
  41.   <port name="PassportPort" binding="typens:PassportBinding">  
  42.    <soap:address location="http://home/webservices/soap/new_passport/server.php"/>  
  43.   </port>  
  44.  </service>  
  45. </definitions>  

 

<?php
$client = new SoapClient("http://home/webservices/soap/new_passport/PassportService.wsdl",
 array(
  "trace"=>1,
  "exceptions"=>0,
  "soap_version" => SOAP_1_2
 )
);
$result = $client->register('hezhiqiang','loveit','developerworks@163.com','H6mSkD');
var_dump($result);
?>

 

Php代码   收藏代码
  1. <?php  
  2. require_once 'Passport.php';  
  3. $server = new SoapServer(  
  4.  "http://home/webservices/soap/new_passport/PassportService.wsdl"  
  5.  ,array(  
  6.   'encoding'=>'utf-8',  
  7.      'soap_version' => SOAP_1_2,  
  8.      'uri' => 'Passport',  
  9.      'style' => SOAP_RPC,  
  10.      'use' => SOAP_LITERAL)  
  11.  );  
  12. $server->setClass('Passport');  
  13. $server->handle();  
  14. ?>  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值