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简单浏览目录内容的实现代码
Jun 07 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
php生成短域名函数
Mar 23 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
深入理解PHP中的count函数
May 31 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
php mysql 封装类实例代码
Sep 18 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
PHP数据库处理封装类实例
Dec 24 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 获取远程文件大小的3种解决方法
2013/07/11 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python中处理时间的几种方法小结
2015/04/09 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python实现FLV视频拼接功能
2020/01/21 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
学校募捐倡议书
2014/05/14 职场文书
教师求职信范文
2014/05/24 职场文书
路政管理求职信
2014/06/18 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
个人职业及收入证明
2014/10/13 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书