2019独角兽企业重金招聘Python工程师标准>>>

  1. 用 composer 安装生成 WSDL 所需的库

    composer require piotrooo/wsdl-creator
    
  2. 实现用于外部访问的入口文件,代码示例请参考(其中方法名和参数中出现的 Notify 对应一个类名,该类的方法将成为可以通过 SOAP 调用的外部接口):

    <?php
    use WSDL\DocumentLiteralWrapper;
    use WSDL\WSDLCreator;
    use WSDL\XML\Styles\DocumentLiteralWrapped;class Api
    {public static function soapNotify(){$host = $_SERVER['HTTP_HOST'];$soapuri = "http://{$host}/Api/soapNotify";if (isset($_GET['wsdl'])) {$wsdl = new WSDLCreator('Notify', $soapuri);$wsdl->renderWSDL();exit;}$server = new SoapServer(null, ['uri' => $soapuri]);$server->setClass('Notify');$server->handle();}
    }
    
  3. 实现包含接口功能逻辑的类文件,代码示例请参考(其中方法的注释相当重要,是 wsdl-creator 正确生成 WSDL 的依据,必须严格按照格式进行注释):

    class Notify
    {/*** @desc sendText 向患者的微信发送文本信息* @param string $toUser 发给哪个用户* @param string $content 发送的内容* @return string $result*/public function sendText($toUser, $content){if (!$toUser || !$content) {return E::INVALID;}$user = G::xpdo()->row("SELECT * FROM `users` WHERE `patientid` = ?", [$toUser]);if (!$user) {return E::NODATA;}$api = G::xpdo()->row("SELECT * FROM `api` WHERE `token` = ?", [$user['token']]);$weixin = new Weixin($api['appid'], $api['appsecret']);$weixin->sendText($user['openid'], $content);return 0;}
    }
    
  4. 使用 SoapUI 软件对接口进行调试

  5. 编制相应的接口调用说明文档

参考资料:

  • 了解 SOAP 的基本文档结构请参考 http://www.sitepoint.com/series/creating-web-services-with-php-and-soap/]
  • 关于生成 WSDL 的库 wsdl-creator 详见: https://github.com/piotrooo/wsdl-creator

转载于:https://my.oschina.net/xiongliding/blog/354386

在 PHP 中实现带 WSDL 的 SOAP相关推荐

  1. WebService:跟孔浩学习(契约优先、Schema、WSDL、SOAP、用户管理小系统)

    异构平台之间的交互 XML (DTDàSchema->Stax(XStream).SAX.Dom4J.PULL)    JAXB XStream和Jackson完成Json和java的转化 SO ...

  2. Team Foundation 中的带编号的错误和事件消息

    Team Foundation 中的带编号的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错误消息和事件消息已经指定了格式为 TFnnn ...

  3. Web services详解 :入门必看 | WSDL、SOAP

    文章目录 概念 交互过程 Web services 三种基本元素: SEI和CXF WSDL 概念 WSDL文档结构 `` **Operation**(操作) `` ***binding*** 元素 ...

  4. 如何使用pyecharts中自带的数据集?

    如何使用 pyecharts 中自带的数据集? 我们在学习pyehcarts绘图的过程中,需要一些练习的数据. pyecharts为我们提供了这样的数据集 – Faker,存储于 faker.py 文 ...

  5. 记得ajax中要带上AntiForgeryToken防止CSRF攻击

    经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...

  6. WPF中制作带中国农历的万年历

    WPF中制作带中国农历的万年历 原文:WPF中制作带中国农历的万年历 本例应用.net 2.0中的ChineseLunisolarCalendar类,制作出带中国农历的万年历.  先看看效果图片(已缩 ...

  7. 在屏幕上输出你好的python语句是_编程实现:在屏幕上输出中文字符“你好,世界”。(输出结果中不带双引号)_学小易找答案...

    [填空题]借战死者诉说战争灾难的汉乐府诗是( ). [判断题]15 的倍数有 15 . 30 . 45 . ( ) [填空题]表现贫民意欲反抗的汉乐府诗是( ). [判断题]不可以在同一台计算机上安装 ...

  8. java mysql 占位符_在Java中编写带占位符的SQL语句

    C#中SQL中带占位符的语句 假设有一张学员信息表Student,通过表中的ID来找学员,查询的SQL语句如下 string sql = string.Format("select * fr ...

  9. Visual Basic中实现带预览的对话框

    Visual Basic中实现带预览的对话框 2007-05-04 07:00作者:出处:论坛整理责任编辑:卢林嘉 用户在图片框中选择图片时,希望预先对图片的轮廓及大小有初步了解,但是VB的通用对话框 ...

最新文章

  1. 对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...
  2. 【并发编程】并发编程的三大特性
  3. android 自启动列表,Android 机型设置自启动的跳转界面
  4. PowerShell自动删除过期数据
  5. 面试必会系列 - 1.1 Java SE 基础
  6. (六)Neo4j综合项目
  7. 小象电商是采用JAVA开发的B2B2C多用户商城系统。
  8. 自己动手写cpu pdf_教你自己动手组装电脑(第一篇:CPU)
  9. java文件的命名_java命名规范
  10. java 自动填充,使用java自动填充,实现mysql的创建修改时间的自动填充
  11. IE可以打开网页 但是chrome和火狐打不开网页解决办法
  12. android 重装系统,如何用手机给电脑重装系统
  13. 如何屏蔽电脑微信自动更新
  14. 常见距离算法-欧氏距离、杰卡德距离、余弦距离
  15. 网易云音乐python爬虫搜索接口,评论接口,歌词接口
  16. 如何批量导入不同文件夹中的图片
  17. 一个外包三流Java程序员凭什么逆袭到阿里P7?看完直呼一声WC
  18. 【Nginx基础知识】
  19. python+gurobi
  20. PTE学术英语考试受全球广泛认可,2018中国考量快速增长

热门文章

  1. 前端图片上坐标连线_平面上三角形“四心”的解析建模
  2. 投票系统web服务器,创建一个Web投票系统
  3. linux使用线程实现生产者消费者问题,Linux平台下线程同步,实现“生产者消费者问题”...
  4. java整形超过,Java整形溢出处理机制。
  5. rpmbuild打包mysql5.7_用rpmbuild打包mysql
  6. 公共端接正极还是负极_【动力电池大事记】现代摩比斯启动首批模组工厂,松下拟挪威建厂,200名车主起诉现代,密歇根大学开发锂金属固态电池及“无负极”工艺...
  7. oracle 新增自增字段,SQL server、Oracle中拿到新增列时的自增字段值
  8. java logback 使用_Java | Logback的使用配置
  9. 第十七届全国大学生智能车竞赛完全模型组 I 型车模数据
  10. 清华校庆正当时,智能小车决赛日