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读写文件的方法(生成HTML)
Nov 27 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
Jun 19 PHP
php的单例模式及应用场景详解
Feb 27 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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禁止个别IP访问网站
2013/10/30 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
javascript 控制弹出窗口
2007/04/10 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
django实现用户登陆功能详解
2017/12/11 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python装饰器用法与知识点小结
2020/03/09 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
python各种excel写入方式的速度对比
2020/11/10 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
市级青年文明号申报材料
2014/05/26 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android