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
福利彩票幸运号码自动生成器
Oct 09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP中预定义的6种接口介绍
May 12 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python itertools模块详解
2015/05/09 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
python制作一个桌面便签软件
2015/08/09 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
简单了解Python write writelines区别
2020/02/27 Python
Python过滤序列元素的方法
2020/07/31 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
Python如何批量生成和调用变量
2020/11/21 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
实用求职信范文分享
2013/12/25 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis