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. web.xml加载过程

    web.xml加载过程:1 启动WEB项目的时候,容器(如:Tomcat)会读他的配置文件web.xml读两个节点  <listener></listener>和<con ...

  2. Jquery 类似新浪微博,鼠标移到头像,用浮动窗口显示用户信息,已做成一个jquery插件

    请注意!!!!! 该插件demo PHP 的 demo下载  C#.NET的demo下载 需要如下图, 1.鼠标移动到头像DIV时,Ajax获取数据,并让浮动DIV显示出来. 2.鼠标可以移动到上面浮 ...

  3. 微信移动端web页面调试小技巧

    技术贴还是分享出来更加好,希望能对一些朋友有帮助,个人博客  http://lizhug.com/mymajor/微信移动端web页面调试小技巧

  4. SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分

    SpringMVC,Spring,Hibernate,Mybatis架构开发搭建之SpringMVC部分 辞职待业青年就是有很多时间来写博客,以前在传统行业技术强度相对不大,不处理大数据,也不弄高并发 ...

  5. HTTP协议 HttpWebRequest和 Socket的一点总结

    HTTP协议 HttpWebRequest和 Socket的一点总结 相信接触过网络开发的人对HTTP.HttpWebRequest.Socket这些东西都不陌生吧.它们之间的一些介绍和关系我这里都忽 ...

  6. [置顶] Objective-C编程之道iOS设计模式单例解析(2)

    上一篇文章,提到了单例子类化的问题.正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容.思考之后,总结了一些内容.其大意是利用NSDirectory存储不同子类的 ...

  7. install cuda5 on ubuntu12.04

    1. sudo apt-get install libglapi-mesa 2. sudo apt-get install freeglut3-dev build-essential libx11-d ...

  8. myeclipse乱码问题和 编码设置

    A    Myeclipse安装后编码默认是GB18030,外面的人一般推荐用UTF-8.如果在导入项目后发现乱码现象,那是编码设置设置不对. Eclipse 编码设置: 全局编码设置:编码设置的方法 ...

  9. 关于ocx中遇到的坑

    前言 这还是第一次写博客,以前太懒了,现在发现是很有必要记录下这些经验和问题的.最近项目中有个需求(报表单据需要客户签名,连接签字板,把签名单据同步到服务器上),需要和硬件交互,当时硬件商提供了ocx ...

  10. .Net多线程编程—同步机制

    1.简介 新的轻量级同步原语:Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait.轻量级同步原语只能 ...