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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
php无序树实现方法
Jul 28 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
PHP Web表单生成器案例分析
Jun 02 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 strtotime函数详解
2009/12/18 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
javascrip关于继承的小例子
2013/05/10 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
详解Python3的TFTP文件传输
2018/06/26 Python
python的中异常处理机制
2018/08/30 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python脚本后台执行方式
2019/12/21 Python
Python流程控制常用工具详解
2020/02/24 Python
CSS3控制HTML元素动画效果
2014/02/08 HTML / CSS
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
《望庐山瀑布》教学反思
2014/04/22 职场文书
个人课题方案
2014/05/08 职场文书
通信工程求职信
2014/07/16 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
教师节主题班会方案
2015/08/17 职场文书