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中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php文件上传简单实现方法
Jan 24 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
浅谈PHP中的数据传输CURL
Sep 06 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 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
Yii学习总结之安装配置
2015/02/22 PHP
php遍历目录方法小结
2015/03/10 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
Python如何将函数值赋给变量
2020/04/28 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
劳动实践课感言
2014/02/01 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
河童之夏观后感
2015/06/11 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
javaScript Array api梳理
2021/03/31 Javascript
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技