php中创建和调用webservice接口示例


Posted in PHP onJuly 25, 2014

作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice。简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到你的请求,根据传过来的参数,做一些处理,然后把处理后的结果以XML形式返回来给你,你的程序就解析这些XML数据,然后显示出来或做其它操作。

写webservice需要了解:基础的 Web Services 平台是 XML + HTTP;另外Web services 平台的元素:SOAP (简易对象访问协议),UDDI (通用描述、发现及整合),WSDL (Web services 描述语言);任何webservice都包括客户端和服务端。下面以实例讲解如何用php写webservice接口让别人调用:

首先需要建一个.wsdl文件,那么php如何建这个文件呢。有两种方式可以实现,一种是直接用zend studio工具生成;另一种就是php根据SoapDiscovery.class.php自动生成wsdl文件;具体哪一种根据自己情况选择,我一般用的是前者这样比较快速。下面写一下用类如何生成wsdl文件,首先需要上网上下载那个类文件,然后引入类文件后,看如下代码:
creat_wsdl.php

<?php

include_once('Service.php');

include_once('SoapDiscovery.class.php');

$wsdl=new SoapDiscovery('Service','soap');//第一参数为类名,也是生成wsdl的文件名Service.wsdl,第二个参数是服务的名字可以随便写

$wsdl->getWSDL();

?>

这样运行creat_wsdl.php文件就可以生成wsdl文件了。是不是很简单
任何一个webservice都需要和一个实现类绑定的。也就是说别人调用的wsdl文件其实真正其作用的就是实现类中的方法;如下代码为服务端类文件
Service.php
<?php

class Service

{

public function Hello()

{

echo 'hello good';

}

public function Add($a,$b)

{

return $a+$b;

}

}

$server=SoapServer('Service.php',array('soap_version'=>soap_1_2));

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

$server->handle();//处理请求

?>

写好服务端和wsdl文件后那么就需要客户端调用了。请看客户端调用代码:

client.php

<?php

ini_set('soap.wsdl_cache_enabled','0');//关闭缓存

$soap=new SoapClient('http://127.0.0.1/soap/Service.php?wsdl');

echo $soap->Add(1,2);

//echo $soap->_soapCall('Add',array(1,2))//或者这样调用也可以

?>

这就是一个完整的写webservice接口和调用的实例代码,希望对需要的phper有所帮助;
那么调用别人的webservice接口就是client.php所写的代码这样调用。

PHP 相关文章推荐
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
php json转换相关知识(小结)
Dec 21 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php操作redis命令及代码实例大全
Nov 19 PHP
PHP解决高并发的优化方案实例
Dec 10 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 #PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 #PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 #PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 #PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 #PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 #PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 #PHP
You might like
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python实现的质因式分解算法示例
2018/05/03 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
Python json格式化打印实现过程解析
2020/07/21 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
满月酒答谢词
2014/01/14 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
亮剑精神观后感
2015/06/05 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
MySQL数据库表约束讲解
2022/06/21 MySQL
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL