PHP实现WebService的简单示例和实现步骤


Posted in PHP onMarch 27, 2015

前段时间在webservice的问题上纠结了很长时间,本来想写在thinkphp的框架里面,可是怎么也实现不了,目前为止也仅仅是学会的没有框架的接口的开发。

在此资源共享一下步骤:

首先我创建的文件有:

api.php  api的接口类文件

api.wsdl  我创建产生的最后要调用的接口文件

cometrue.php 注册service api类内容的所有内容的执行文件

creat_wsdl.php  创建wsdl文件的执行方法文件

SoapDiscovery.class.php  必须要调用的soap类文件(可在网上查询下载)

第一步 :创建一个service的文件夹专门存放您的api接口项目

第二步:下载SoapDiscovery.class.php类文件,放在您的service文件夹里面

第三步:在service文件夹下面创建您自己api接口类文件api.php,文件内容示例如下:

<?php

class api{

    //我的测试接口方法

    public function test(){

        return "hello world";

    }

}

?>

好了,我们的接口写完之后,开始生成关于这个接口的wsdl文件

第四部:写一个生成wsdl文件的执行程序,在这里我来新建一个文件 creat_wsdl.php,同样放在service同级目录下面,内容如下:

<?php

include("api.php");

include("SoapDiscovery.class.php");

$disc = new SoapDiscovery('api','service');//api类文件名,service接口目录

$disc->getWSDL();

?>

第五步:执行creat_wsdl.php文件

PHP实现WebService的简单示例和实现步骤

然后,在service文件夹下面就多了一个api.wsdl的文件,如下图所示:

PHP实现WebService的简单示例和实现步骤

现在还没有完奥~

第六步:注册api类文件中的所有方法,在service文件夹下新建一个注册类文件的执行文件命名为:cometrue.php,文件内容如下:

<?php

$server = new SoapServer('api.wsdl', array('soap_version' => SOAP_1_2)); ##此处的Service.wsdl文件是上面生成的

$server->setClass("api"); //注册Service类的所有方法 

$server->handle();

?>

建完之后,执行该文件,此时便将类文件中所有的内容注册完成了,我们来测试一下这个接口

第七步 :在api的类文件api.php的最下面,加上调用的程序,加上之后api.php的文件内容如下:

<?php

class api{

    //我的测试接口方法

    public function test($a){

        return $a;

    }

}

$server = new SoapServer('api.wsdl', array('soap_version' => SOAP_1_2)); ##此处的Service.wsdl文件是上面生成的

$server->setClass("api"); //注册Service类的所有方法 

$server->handle();

?>

第七步:测试,在service外随意的位置(只要能访问得到)创建测试文件 命名为:test.php,文件内容如下:

<?php 

 $x = new SoapClient("http://rbac.local/service/api.php?wsdl"); //这里的链接换成你自己的访问链接

 echo $x->test('ok');

?>
PHP 相关文章推荐
PHP的变量总结 新手推荐
Apr 18 PHP
解析isset与is_null的区别
Aug 09 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
php实现的短网址算法分享
Jun 20 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
php实现的mongodb操作类实例
Apr 03 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP实现文件上传下载实例
Oct 18 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 #PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 #PHP
php实现RSA加密类实例
Mar 26 #PHP
PHP中实现crontab代码分享
Mar 26 #PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 #PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 #PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 #PHP
You might like
PHP生成带有雪花背景的验证码
2006/10/09 PHP
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
php自定义错误处理用法实例
2015/03/20 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python如何获取系统iops示例代码
2016/09/06 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python学生管理系统的实现
2020/04/05 Python
QML用PathView实现轮播图
2020/06/03 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
协议书的格式
2014/04/23 职场文书
任命书怎么写
2014/06/04 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书