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

详情请查看:

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

基于PHP——简单的WSDL的创建(WSDL篇)的更多相关文章

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

    本文转载自:http://blog.csdn.net/rrr4578/article/details/24451943 1.建立WSDL文件     建立WSDL的工具很多,eclipse.zends ...

  2. 创建WSDL项目

    WSDL文件是测试基于soap的服务,他们定义实际暴露服务和要求SoapUI生成测试,要求信息,验证和MockServices. SoapUI支持最广泛使用的1.1版本的WSDL和SOAP 1.1和1 ...

  3. soapui中文操作手册(二)----通过您的WSDL请求创建一个测试

      1.通过您的WSDL请求创建一个测试 点击加号旁边的导航拓展项目树的Web服务,并选择请求: 在SoapUI Pro中,所述请求编辑出现在右边.SoapUI Pro有一个编辑器,它简化了XML的层 ...

  4. CountBoard 是一个基于Tkinter简单的,开源的桌面日程倒计时应用

    CountBoard 是一个基于Tkinter简单的,开源的桌面日程倒计时应用. 项目地址 https://github.com/Gaoyongxian666/CountBoard 基本功能 置顶功能 ...

  5. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  6. Tridiv:基于 Web 的 CSS 编辑器,创建炫丽 3D 图形

    Tridiv 是一个基于 Web 的编辑器,使用 CSS 创建 3D 形状.它提供了一个传统的四个面板的操作界面,给出了从每个平面的视图,以及一个预览窗格中示出的最终的效果.使用 Tridiv 可以创 ...

  7. 基于Bootstrap简单实用的tags标签插件

    http://www.htmleaf.com/jQuery/ jQuery之家 自由分享jQuery.html5和css3的插件库 基于Bootstrap简单实用的tags标签插件

  8. Docker 基于已有镜像的容器创建镜像

    Docker 基于已有镜像的容器创建镜像: docker:/root# docker run -it januswel/centos /bin/bash docker exec -it januswe ...

  9. 基于最简单的FFmpeg包封过程:视频和音频分配器启动(demuxer-simple)

    ===================================================== 基于最简单的FFmpeg封装工艺的系列文章上市: 最简单的基于FFmpeg的封装格式处理:视 ...

随机推荐

  1. offsetWidth, offsetHeight, offsetLeft, offsetTop,clientWidth, clientHeight,clientX,pageX,screenX

    offsetWidth: 元素在水平方向上占用的空间大小.包括元素的宽度,内边距,(可见的)垂直滚动条的宽度,左右边框的宽度. offsetHeight:元素在垂直方向上占用的空间大小,包括元素的高度 ...

  2. jquery实现调用webservice

    1.webservice端 using System; using System.Collections.Generic; using System.Web; using System.Web.Ser ...

  3. Ubuntu 创建启动器

    首先我们要了解,Ubuntu 的 Dash 里所有程序都是在 /usr/share/applications 中的,所以我们的思路很简单——建一个类似于“快捷方式”一样的东西扔进去就好了.所以第一步自 ...

  4. LINUX下编译安装最新版本mysql

    通过参考其他文章 1.下载安装mysql-5.5.30.tar.gz与cmake.2.8.11.2.tar.gz (1)先安装cmake(mysql5.5以后是通过cmake来编译的) [root@ ...

  5. [Thinkbayes]贝叶斯思维读书笔记-1-贝叶斯定理

    使用贝叶斯定理,目前来看最重要的一点在于假设.就是未知事件已知化,同时也要注意假设的全程性,不能从中开始新的假设,这种假设往往是不全面的. 我自己找到的假设的方法有两种,一种是命名,一种是时序.全程性 ...

  6. idea远程调试linux下的tomcat

    要远程调试代码,首先的保障本地的代码和远程tomcat的代码是同一份 首先在本地idea配置一个远程tomcat服务器 host就填写远程主机ip port填写访问的端口(不是调试端口) 然后在Sta ...

  7. 创建 OVS vlan100 netwrok - 每天5分钟玩转 OpenStack(137)

    上一节完成了 OVS vlan network 的配置准备工作,今天我们创建 vlan100.打开菜单 Admin -> Networks,点击 "Create Network&quo ...

  8. 官网.jar包下载技巧

    最近在学Java,但是往往要用到好多jar包,只能从网上下载,但是网上找实在太费事了,而且有时候给我们带来了许多的不便.找不到jar包程序就运行不了,心里真不是个滋味.可是自己就是不甘心.经过我的不懈 ...

  9. 算法笔记_015:快速排序(Java)

    目录 1 问题描述 2 解决方案 2.1 快速排序原理简介 2.2 具体编码 1 问题描述 给定一组数据,使用快速排序得到这组数据的非降序排列. 2 解决方案 2.1 快速排序原理简介 引用自百度百科 ...

  10. ELK采集之nginx 之高德地图出城市IP分布图

    1.采用拓扑: 角色扮演: Agent:采用logstash,IP:192.168.10.7 Redis队列: IP:192.168.10.100 Indexer:logstash,IP:192.16 ...