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执行速度全攻略(上)
Oct 09 PHP
十天学会php之第五天
Oct 09 PHP
PHP 采集程序 常用函数
Dec 18 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
php遍历CSV类实例
Apr 14 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
PHP预定义超全局数组变量小结
Aug 20 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
Python中str.format()详解
2017/03/12 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
如何查看python关键字
2021/01/17 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
培训演讲稿范文
2014/01/12 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
学生安全责任书范本
2014/07/24 职场文书
车辆年检委托书范本
2014/10/14 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
导师对论文的学术评语
2015/01/04 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
高二数学教学反思
2016/02/18 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库