`

基于PHP——简单的WSDL的创建(WSDL篇)

    博客分类:
  • php
 
阅读更多

原文:基于PHP——简单的WSDL的创建(WSDL篇)

 

 


1、建立WSDL文件
     建立WSDL的工具很多,eclipse、zendstudio、vs都可以,我个人建议自己写,熟悉结构,另外自动工具对xml schame类型支持在类型中可能会报错。
下面是我自己写的模板:

  1. <?xml version ='1.0' encoding ='UTF-8' ?>   
  2. <definitions name='自定义名称'   
  3.   targetNamespace='目标命名空间(WSDL所在地址)'   
  4.     <!--tns自定义目标空间,下面会用到-->  
  5.   xmlns:tns='目标命名空间(WSDL所在地址)'  
  6.   xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'   
  7.   xmlns:xsd='http://www.w3.org/2001/XMLSchema'   
  8.   xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'   
  9.   xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'   
  10.   xmlns='http://schemas.xmlsoap.org/wsdl/'>  
  11.    
  12. <!--<types> 元素定义 web service 使用的数据类型,WSDL 使用 XML Schema 语法来定义数据类型,这里可以定义一些Schema不支持的类型-->  
  13.  <types>  
  14.     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
  15.         targetNamespace="目标命名空间(WSDL所在地址)">   
  16.     </xsd:schema>  
  17.  </types>   
  18.   
  19. <!--  
  20. <message> 元素可定义每个消息的部件,以及相关联的数据类型。  
  21. 请求-响应是最普通的操作类型,不过 WSDL 定义了四种类型:  
  22. One-way 此操作可接受消息,但不会返回响应。  
  23. Request-response    此操作可接受一个请求并会返回一个响应。(常用)  
  24. Solicit-response    此操作可发送一个请求,并会等待一个响应。  
  25. Notification    此操作可发送一条消息,但不会等待响应。  
  26. -->    
  27. <message name='请求消息名称(方法名+Request)'>   
  28.     <part name="term" type="xsd:string"/>  
  29. </message>   
  30.   
  31. <message name='响应消息名称(方法名+Response)'>   
  32.     <part name="value" type="xsd:string"/>  
  33. </message>  
  34.   
  35. <!--  
  36. <portType> 元素是最重要的 WSDL 元素。它可描述一个 web service、可被执行的操作,以及相关的消息。  
  37. 它告诉你去哪个WebService的连接点,扮演了一个控制者。  
  38. -->  
  39. <portType name='执行的操作名称(binding的type与其对应)'>   
  40.   <operation name='执行操作的方法'>   
  41.     <input message='tns:*Request'/>   
  42.     <output message='tns:*response'/>   
  43.   </operation>   
  44. </portType>  
  45.   
  46. <!--<binding> 元素为每个端口定义消息格式和协议细节-->  
  47. <binding name='Binding的名称,与service的port名称对应' type='指向用于Binding的端口(tns(前缀):PortType名称)'>   
  48. <!--style:属性可取值 "rpc" 或 "document",ransport:属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP-->  
  49.   <soap:binding style='rpc'   
  50.     transport='http://schemas.xmlsoap.org/soap/http'/>   
  51.     <!--operation 元素定义了每个端口提供的操作符,对于每个操作,相应的 SOAP 行为都需要被定义-->  
  52.   <operation name='GetCallDetailRecords'>   
  53.     <soap:operation soapAction='http://www.cwtservice.cn/newOperation/'/>   
  54.     <input>   
  55.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'   
  56.         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>   
  57.     </input>   
  58.     <output>   
  59.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'   
  60.         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>   
  61.     </output>   
  62.   </operation>   
  63. </binding>  
  64.   
  65. <!--<service>包含一个或者多个port元素,每个port元素表示一个不同的Web服务-->  
  66. <service name='服务名称'>   
  67.   <port name='Binding名称' binding='tns:Binding名称'>   
  68.     <soap:address location='http://目标命名空间(WSDL所在地址)/service.php'/>   
  69.   </port>   
  70. </service>   
  71. </definitions>  


2、在service目录下建立myphone.wsdl

  1. <?xml version ='1.0' encoding ='UTF-8' ?>   
  2. <definitions name='phonebook'   
  3.   targetNamespace='http://www.mysoapservice.cn/'   
  4.   xmlns:tns='http://www.mysoapservice.cn/'  
  5.   xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'   
  6.   xmlns:xsd='http://www.w3.org/2001/XMLSchema'   
  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.     
  11.  <types>  
  12.     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
  13.         targetNamespace="http://www.mysoapservice.cn/">   
  14.     </xsd:schema>  
  15.  </types>   
  16.   
  17. <message name='GetPhoneBookRequest'>   
  18.     <part name="name" type="xsd:string"/>  
  19. </message>   
  20.   
  21. <message name='GetPhoneBookResponse'>   
  22.     <part name="phonebookInfo" type="xsd:string"/>  
  23. </message>  
  24.   
  25. <portType name='PhoneBookToEveryOneProt'>   
  26.   <operation name='GetPhoneBook'>   
  27.     <input message='tns:GetPhoneBookRequest'/>   
  28.     <output message='tns:GetPhoneBookResponse'/>   
  29.   </operation>  
  30. </portType>  
  31.   
  32. <binding name='PhoneBookSOAP' type='tns:PhoneBookToEveryOneProt'>   
  33.   <soap:binding style='rpc'   
  34.     transport='http://schemas.xmlsoap.org/soap/http'/>   
  35.   <operation name='GetPhoneBook'>   
  36.     <soap:operation soapAction='http://www.cwtservice.cn/newOperation/'/>   
  37.     <input>   
  38.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'   
  39.         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>   
  40.     </input>   
  41.     <output>   
  42.       <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'   
  43.         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>   
  44.     </output>   
  45.   </operation>   
  46. </binding>  
  47.   
  48. <service name='PhoneBookService'>   
  49.   <port name='PhoneBookSOAP' binding='tns:PhoneBookSOAP'>   
  50.     <soap:address location='http://www.mysoapservice.cn/service.php'/>   
  51.   </port>   
  52. </service>   
  53. </definitions>  

3、修改service.php

  1. <?php  
  2. function GetPhoneBook($name){  
  3.     $pbook="Zhangsan,13888888888,friend,8888@163.com";  
  4.     return $pbook;  
  5. }  
  6. $server = new SoapServer("myphone.wsdl");  
  7. $server->addFunction("GetPhoneBook");  
  8. $server->handle ();   
  9. ?>  

4、修改client.php

  1. <?php  
  2. header('Content-Type:text/html;charset=utf-8');  
  3. $client = new SoapClient("http://www.mysoapservice.cn/service.php?WSDL" , array('trace'=>true));  
  4. var_dump($client->__getTypes());  
  5. try {  
  6.  $response = $client->GetPhoneBook('zhang');  
  7.  var_dump($response);  
  8. }catch (SoapFault $sf){  
  9.  var_dump($sf);  
  10.  print ($client->__getLastRequest());  
  11.  print ($client->__getLastResponse());  
  12. }  
  13. ?>  

测试:
http://www.mysoapclient.cn/client.php

分享到:
评论

相关推荐

    Eclipse WSDL 创建

    Eclipse是一个非常流行的...上述知识点并未完全覆盖Eclipse和WSDL的全部内容,但提供了一个关于如何在Eclipse中创建WSDL文件的简单指南。对于更深入的了解,读者可以查阅Eclipse官方文档或者参加相关技术论坛的讨论。

    Web服务搜索与执行引擎——WSDL与SOAP

    Web服务搜索与执行引擎的核心是Web服务描述语言(WSDL)和简单对象访问协议(SOAP)。WSDL是一种基于XML的规范,用于定义Web服务的接口,描述服务提供的操作、输入和输出消息,以及服务的位置和协议。由于其基于XML...

    php很简单的操作wsdl的例子

    现在,我们将深入探讨这个“php很简单的操作wsdl的例子”所涵盖的知识点。 1. **PHP与SOAP**:PHP支持SOAP扩展,可以用来创建客户端和服务端。客户端用于调用远程Web服务,而服务端则定义并实现这些服务。通过`Soap...

    WSDL创建消费类.rar

    本教程将深入探讨如何在ABAP中创建并消费WSDL类,以便于开发和集成Web服务。以下是对这个"ABAP开发资料,视频详细地讲解WSDL消费类的创建过程"的详细解析。 首先,我们需要了解WSDL的基本概念。WSDL是一种XML格式,...

    wsdl2php自动生成

    通常,你会有一个命令行工具,例如`wsdl2php.php`或`wsdl2php`,通过命令行运行它并指定你的WSDL文件路径。 3. **生成PHP代码**:运行命令后,工具会根据WSDL文件生成PHP代码,将其保存在指定的目录下。 4. **使用...

    简单WSDL实例

    本实例将深入探讨一个简单的WSDL文件结构及其组成部分,帮助读者理解如何创建和解析WSDL文件,以便更好地利用Web服务。 1. **WSDL文档结构** WSDL文档通常包含以下关键元素: - `wsdl:definitions`:这是WSDL文档...

    wsdl4j 解析wsdl 文件

    理解WSDL4J的工作原理和使用方法对于开发和消费基于WSDL的Web服务至关重要。 ### WSDL4J简介 1. **WSDL4J作用**:WSDL4J提供了一套API,允许开发者读取、创建和修改WSDL文档。它支持WSDL 1.1规范,并且可以与SOAP和...

    根据wsdl生成webservice服务端(3种方式)

    `wsdl2java`命令简单直接,适用于命令行环境;SOAPUI工具则提供了图形界面,易于上手;而MyEclipse则集成了项目管理、代码生成等功能,更适合大型项目开发。开发者可根据实际需求选择合适的方法进行服务端的生成。

    wsdl生成工具

    基于.NET 4.0开发的WSDL生成工具,为开发者提供了一个便捷的平台,能够帮助他们快速、高效地创建和定制WSDL文档。 【知识点详解】 1. **Web服务**:Web服务是一种通过HTTP协议进行通信的应用程序,允许不同的系统...

    wsdl2phpgenerator简单的工具和类库从SOAPWSDL文件生成php类

    通过使用这个库,开发者可以快速将SOAP WSDL文件转化为PHP代码,创建出与服务交互所需的类。这减少了手动编码的工作量,提高了开发效率,并且降低了错误的可能性。 使用wsdl2phpgenerator,你可以: 1. 自动解析...

    利用Zend Studio for Eclipse生成wsdl文件,php调用web service

    总结:本文详细阐述了使用Zend Studio for Eclipse创建和调用PHP Web Service的全过程,涵盖了从创建项目、编写服务程序、生成WSDL文件,到最后调试客户端程序的各个步骤。理解并掌握这些知识点,对于开发和维护PHP ...

    wsdl需要的jar包

    10. **测试WSDL服务**:使用WSDL测试客户端(如 soapUI)可以方便地对基于WSDL的Web服务进行功能和性能测试,确保服务按照预期工作。 综上所述,处理WSDL文件在Java开发中是必不可少的,涉及到Web服务的创建、调用...

    wsdl.rar_WSDL

    WSDL通常与SOAP(Simple Object Access Protocol)结合使用,SOAP是一种基于XML的消息传递协议,用于在Web服务中传递信息。WSDL文档会指定服务使用SOAP的消息格式,定义消息的结构以及服务的调用方式。 **3. WSDL的...

    WSDL Eclipse创建

    本文将详细介绍如何使用Eclipse WTP工具创建WSDL文件以及相关步骤。 1. **新建WSDL文件**:首先,你需要在Eclipse集成开发环境中安装Web Tools Platform (WTP) 插件,它提供了对Web服务开发的支持。启动Eclipse,...

    WSDL创建对象,然后传递过程.doc

    本文将详细讲解如何使用Eclipse WTP工具创建并发布一个基于WSDL的服务,包括创建对象、传递过程及最终的发布测试。 1. **创建WSDL文件** 首先,我们需要使用Eclipse WTP(Web Tools Platform)插件创建一个新的WSDL...

    SoapUI测试工具WSDL文件生成--个人总结

    WSDL(Web Services Description Language)是一种基于XML的语言,用于描述网络服务(如SOAP Web服务)的接口和消息格式。WSDL文件通常包含以下几部分: - **定义**:包括命名空间和导入其他WSDL文件的信息。 - **...

    在PHP中利用wsdl创建标准webservice的实现代码

    在PHP中创建基于WSDL(Web Service Description Language)的标准Web服务是一种常见的做法,因为WSDL是一种XML格式,用于描述Web服务的接口、消息结构、操作和绑定。在本例中,我们将探讨如何不依赖第三方库如nusoap...

    JavaScript 调用wsdl示例

    2. **创建SOAP客户端**:一旦WSDL被解析,你可以创建一个SOAP客户端对象。这个客户端知道如何构造和发送SOAP请求,同时也能处理返回的响应。 3. **调用服务操作**:每个WSDL服务定义了一系列操作,这些操作对应于...

    使用CXF: Java 2 WSDL

    通过Java 2 WSDL,我们可以基于已经定义好的Java接口自动创建服务契约,使得客户端能够理解和调用服务。 3. **CXF的Wsdl2Java工具**:CXF提供了一个名为`wsdl2java`的命令行工具,可以将WSDL文档转换为Java源代码,...

Global site tag (gtag.js) - Google Analytics