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读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php数组去除空值函数分享
Feb 02 PHP
PHP中预定义的6种接口介绍
May 12 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
YII框架关联查询操作示例
Apr 29 PHP
php面试实现反射注入的详细方法
Sep 30 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的十大要点(上)
2009/02/04 PHP
优化PHP程序的方法小结
2012/02/23 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
python3实现读取chrome浏览器cookie
2016/06/19 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python pygame实现2048游戏
2018/11/20 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python绘制多个子图的实例
2019/07/07 Python
python retrying模块的使用方法详解
2019/09/25 Python
通过实例学习Python Excel操作
2020/01/06 Python
Python tkinter三种布局实例详解
2020/01/06 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
内刊编辑求职自荐书范文
2014/02/19 职场文书
元旦促销方案
2014/03/15 职场文书
文秘个人求职信范文
2014/04/22 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
法人代表证明书范本
2015/06/18 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL