在 PHP 中实现带 WSDL 的 SOAP
2019独角兽企业重金招聘Python工程师标准>>>
用 composer 安装生成 WSDL 所需的库
composer require piotrooo/wsdl-creator
实现用于外部访问的入口文件,代码示例请参考(其中方法名和参数中出现的
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();} }
实现包含接口功能逻辑的类文件,代码示例请参考(其中方法的注释相当重要,是 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;} }
使用 SoapUI 软件对接口进行调试
编制相应的接口调用说明文档
参考资料:
- 了解 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相关推荐
- WebService:跟孔浩学习(契约优先、Schema、WSDL、SOAP、用户管理小系统)
异构平台之间的交互 XML (DTDàSchema->Stax(XStream).SAX.Dom4J.PULL) JAXB XStream和Jackson完成Json和java的转化 SO ...
- Team Foundation 中的带编号的错误和事件消息
Team Foundation 中的带编号的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错误消息和事件消息已经指定了格式为 TFnnn ...
- Web services详解 :入门必看 | WSDL、SOAP
文章目录 概念 交互过程 Web services 三种基本元素: SEI和CXF WSDL 概念 WSDL文档结构 `` **Operation**(操作) `` ***binding*** 元素 ...
- 如何使用pyecharts中自带的数据集?
如何使用 pyecharts 中自带的数据集? 我们在学习pyehcarts绘图的过程中,需要一些练习的数据. pyecharts为我们提供了这样的数据集 – Faker,存储于 faker.py 文 ...
- 记得ajax中要带上AntiForgeryToken防止CSRF攻击
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...
- WPF中制作带中国农历的万年历
WPF中制作带中国农历的万年历 原文:WPF中制作带中国农历的万年历 本例应用.net 2.0中的ChineseLunisolarCalendar类,制作出带中国农历的万年历. 先看看效果图片(已缩 ...
- 在屏幕上输出你好的python语句是_编程实现:在屏幕上输出中文字符“你好,世界”。(输出结果中不带双引号)_学小易找答案...
[填空题]借战死者诉说战争灾难的汉乐府诗是( ). [判断题]15 的倍数有 15 . 30 . 45 . ( ) [填空题]表现贫民意欲反抗的汉乐府诗是( ). [判断题]不可以在同一台计算机上安装 ...
- java mysql 占位符_在Java中编写带占位符的SQL语句
C#中SQL中带占位符的语句 假设有一张学员信息表Student,通过表中的ID来找学员,查询的SQL语句如下 string sql = string.Format("select * fr ...
- Visual Basic中实现带预览的对话框
Visual Basic中实现带预览的对话框 2007-05-04 07:00作者:出处:论坛整理责任编辑:卢林嘉 用户在图片框中选择图片时,希望预先对图片的轮廓及大小有初步了解,但是VB的通用对话框 ...
最新文章
- 对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...
- 【并发编程】并发编程的三大特性
- android 自启动列表,Android 机型设置自启动的跳转界面
- PowerShell自动删除过期数据
- 面试必会系列 - 1.1 Java SE 基础
- (六)Neo4j综合项目
- 小象电商是采用JAVA开发的B2B2C多用户商城系统。
- 自己动手写cpu pdf_教你自己动手组装电脑(第一篇:CPU)
- java文件的命名_java命名规范
- java 自动填充,使用java自动填充,实现mysql的创建修改时间的自动填充
- IE可以打开网页 但是chrome和火狐打不开网页解决办法
- android 重装系统,如何用手机给电脑重装系统
- 如何屏蔽电脑微信自动更新
- 常见距离算法-欧氏距离、杰卡德距离、余弦距离
- 网易云音乐python爬虫搜索接口,评论接口,歌词接口
- 如何批量导入不同文件夹中的图片
- 一个外包三流Java程序员凭什么逆袭到阿里P7?看完直呼一声WC
- 【Nginx基础知识】
- python+gurobi
- PTE学术英语考试受全球广泛认可,2018中国考量快速增长
热门文章
- 前端图片上坐标连线_平面上三角形“四心”的解析建模
- 投票系统web服务器,创建一个Web投票系统
- linux使用线程实现生产者消费者问题,Linux平台下线程同步,实现“生产者消费者问题”...
- java整形超过,Java整形溢出处理机制。
- rpmbuild打包mysql5.7_用rpmbuild打包mysql
- 公共端接正极还是负极_【动力电池大事记】现代摩比斯启动首批模组工厂,松下拟挪威建厂,200名车主起诉现代,密歇根大学开发锂金属固态电池及“无负极”工艺...
- oracle 新增自增字段,SQL server、Oracle中拿到新增列时的自增字段值
- java logback 使用_Java | Logback的使用配置
- 第十七届全国大学生智能车竞赛完全模型组 I 型车模数据
- 清华校庆正当时,智能小车决赛日