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 相关文章推荐
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
laravel与thinkphp之间的区别与优缺点
Mar 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+curl 发送图片处理代码分享
2015/07/09 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
初步讲解Python中的元组概念
2015/05/21 Python
基于python实现名片管理系统
2018/11/30 Python
python 阶乘累加和的实例
2019/02/01 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
业务员自荐信范文
2014/04/20 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
java基础——多线程
2021/07/03 Java/Android